西安外国语大学2023年C语言程序设计期末相关题目
本试卷为西安外国语大学2023年C语言程序设计期末相关题目,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言程序设计期末相关题目
一、理论基础 (共20题,每题1分,共计10分)
( A )
1、设int x=7,则~x的值是________。
( B )
2、若变量已正确定义并赋值,符合c语言语法的表达式是________。
( D )
3、在位运算中,操作数每左移两位,其结果相当于________。
( C )
4、若ch为char型变量,k为int型变量(已知字符a的ascil码是97),则执行下列语句后输出的结果为( )。
ch='b'; k=10;
printf("%x,%0,",ch,ch,k);
printf("k=%%d\n",k);
( A )
5、若变量已正确定义,在语句"if(w)printf("%d\n",k);"中,以下不可替代w的是________。
( D )
6、有如下定义类型语句,若从键盘输入数据,正确的输入语句是________。 int x; char y; char z[20];
( D )
7、下列选项不符合良好程序设计风格的是________。
( C )
8、以下关于运算符优先顺序的描述中正确的是 。
( B )
9、将十进制数0.625转换成二进制数是________。
( B )
10、设x为int型变量,则执行语句x=10和x+=x-=x-x后,x的值为:
( A )
11、若有定义语句: int a[4][10],*p,*q[4]; 且0<=i<4,则错误的赋值是________。
( D )
12、设int b=2; 表达式(b<<2)/(b>>1)的值是________。
( D )
13、按照运算符功能的划分,运算符==属于________。
( D )
14、是不正确的c语言赋值语句。
( C )
15、以下叙述中不正确的是________。
( B )
16、已知整型变量a=13和b=6,则a&b和a^b的值分别是________。
( B )
17、流程图中,输入/输出框用( )图形表示?
( C )
18、与数学式子3乘以x的n次方/(2x-1)对应的c语言表达式是______。
( C )
19、以下数值中,不正确的八进制数或十六进制数是________。
( A )
20、设 int b=2; 表达式(b>>2)/(b>>1) 的值是________。
二、控制结构 (共10题,每题1分,共计10分)
( C )
1、在嵌套使用if语句时,c语言规定else总是________。
( D )
2、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是________。
( C )
3、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
( C )
4、关于结构化程序设计原则和方法的描述错误的是________。
( A )
5、if语句的基本形式为:if(表达式)语句,其中"表达式"________。
( B )
6、有以下程序
#include <stdio.h>
main ()
{
int a = 5, b = 4, c = 3, d = 2;
if (a > b > c)
printf ("%d\n", d);
else if ((c - 1 >= d) == 1)
printf ("%d\n", d + 1);
else
printf ("%d\n", d + 2);
}
执行后输出的结果是________。
( C )
7、下列程序的输出结果是______。
#include<stdio.h>
main()
{
int a=0,b=1,c=2;
if(++a>0 || ++b>0) ++c;
printf("%d,%d,%d",a,b,c);
}
( C )
8、下列if语句中,不正确的是________。
( B )
9、将三个数排序需要比较________次。
( D )
10、选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达 式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。
三、循环结构 (共10题,每题1分,共计10分)
( A )
1、下列叙述中正确的是________。
( C )
2、下面程序段中 , 循环体的执行次数是 ___________.
int a=10,b=0;
do
{
b+=2;
a-=2+b;
}
while(a>=0);
( C )
3、以下说法中不正确是________。
( D )
4、下面有关for循环的正确描述是________。
( B )
5、有下列程序:
main()
{
int i,j;
for(i=1;i<4;i++)
{
for(j=i;j<4;j++) printf("%d*%d=%d",i,j,i*j);
printf("\n");
}
}
程序运行后的输出结果是________。
( B )
6、以下程序的功能是计算s=1+12+123+1234+12345。
#include <stdio.h>
main()
{
int t=0,s=0,i;
for(i=1;i<=5;i++) {
t=i+_____;
s=s+t;
}
printf("s=%d\n",s);
}
则______部分是________。
( C )
7、运行下面程序时,从键盘输入字母h,则输出结果是
#include<stdio.h>
main()
{
char ch;
ch=getchar();
switch(ch) {
case ’h’: printf("hello!\n");
case ’g’: printf("good morning!\n");
default : printf("bye_bye!\n");
}
}
( A )
8、下面程序的运行结果是________。
#include <stdio.h>
void main()
{
int y=10;
do
{
y--;
}
while(--y);
printf("%d\n",y--);
}
( C )
9、以下程序的输出结果是________。
#include<stdio.h>
main( )
{
int i;
for(i=1;i<5;i++)
{
if(i%2)printf(''+''); else continue;
printf(''-'')
}
printf('' $ \n'');
}
( B )
10、以下程序段的输出结果为()。 for(i=4;i>1;i--) for(j=1;j
四、数组/指针数组 (共10题,每题1分,共计10分)
( B )
1、以下数组定义中错误的是________。
( B )
2、有以下定义 char a[10],*b=a; 不能给数组a输入字符串的语句是________。
( B )
3、以下能正确定义一维数组的选项是________。
( D )
4、执行下面的语句后,表达式*(p[0]+1)+**(q+2)的值为______。 int a[]= { 5,4,3,2,1 },*p[]= { a+3,a+2,a+1,a },**q=p;
( B )
5、下列对c语言字符数组的描述中正确的是________。
( B )
6、下列二维数组初始化语句中,正确且与语句int a[][3]= { 1,2,3,4,5 }等价的是________。
( C )
7、下面程序段的运行结果是 char a[ ]="lanuage",*p; p=a; while(*p!='u') printf("%c",*p-32); p++;
( C )
8、下面程序段的运行结果是________。 char * format="%s,a=%d,b=%d\n"; int a=11,b=10; a+=b; printf(format,"a+=b",a,b);
( C )
9、若有说明:int a[][4]={1,1} 则以下叙述正确的是________。
( D )
10、以下对一维数组a 的正确说明是________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( B )
1、c语言中,下列不合法的字符串常量是________。
( C )
2、以下不能将s所指字符串正确复制到t所指存储空间的是________。
( D )
3、在c语言中,以 作为字符串结束标志
( A )
4、下列字符串是标识符的是: 。
( C )
5、以下能将字符串,you are luck!正确读入的语句组是________。
( B )
6、宏定义用于将一个标识符定义为一个
( A )
7、下列对字符串的定义中,错误的是________。
( C )
8、设 char *s="\ta\017bc"; 则指针变量s指向的字符串所占的字节数 是________。
( B )
9、字符串指针变量中存入的是________。
( C )
10、判断两个字符串是否相等,正确的表达方式是________。
六、函数/函数指针 (共10题,每题1分,共计10分)
( B )
1、以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址
#include <stdio.h>
#include <string.h>
char *scmp(char *s1, char *s2)
{
if(strcmp(s1,s2)<0) return(s1);
else return(s2);
}
main()
{
int i;
char string[20], str[3][20];
for(i=0;i<3;i++) gets(str[i]);
strcpy(string,scmp(str[0],str[1]));
/*库函数strcpy对字符串进行复制*/
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为
( C )
2、程序流程图中指有箭头的线段表示的是________。
( A )
3、在c语言中,main函数默认返回一个( )类型的值。
( C )
4、有如下函数定义;
void func(int a,int & b)
{
a++;
b++;
}
若执行代码段:int x=0,y=1;
func(x,y);
则变量x和y的值分别是________。
( B )
5、设int*p[4]; 则标识符p是________。
( B )
6、结构化程序设计方法的三种基本控制结构中不包括(. )。
( A )
7、程序运行过程中常使用参数在函数(过程)间传递信息,引用调用传递的是实参的________。
( C )
8、请读程序:
#include <stdio.h>
func(int a, int b) {
int c;
c=a+b;
return c;
}
main()
{
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
上面程序的输出结果是________。
( B )
9、以下叙述中正确的是()。
( B )
10、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是
七、指针 (共10题,每题1分,共计10分)
( A )
1、设有下列程序段: char str[]="helloworld"; char*ptr; ptr=str ;执行上面的程序段后,*(ptr+10)的值为________。
( D )
2、下列选项中,能正确定义数组的语句是________。
( C )
3、已定义以下函数 fun(int *p)
{
return *p;
}
该函数的返回值是________。
( B )
4、语句int *p; 说明了 。
( C )
5、排序的重要目的是为了以后对已排序的数据元素进行________。
( D )
6、下列关于函数参数的叙述中,正确的是________。
( B )
7、有如下定义: int a[5]= { 1,3,5,7,9 }, * p=a; 下列表达式中不能得到数值5的是________。
( A )
8、下列定义数组的语句中,正确的是______。
( A )
9、下列程序的输出结果是________。
#include<stdio.h>
int fun(int x)
{
int p;
if(x==0‖x==1) return 3;
else p=x-fun(x-2);
return p;
}
void main()
{
print f("\n%d", fun(5));
}
( D )
10、下列关于函数的调用方式,说法不正确的是________?
八、结构体 (共10题,每题1分,共计10分)
( C )
1、有以下程序
typedef struct
{
char name[9];
char sex;
float score [2];
} stu;
stu f(stu a) {
stu b={"zhao", 'm', 85.0, 90.0};
int i;
strcpy(a.name, b.name);
a.sex=b.sex:;
for(i=0;i<2;i++) a.score[i]=b.score[i];
return a:
}
main() {
stu c=
{
"qian", 'f', 95.0, 92.0
};
stu d=f(c);
printf("%s, %c, %2.0f, %2.0f", d.name, d.sex, d.score[0], d.score[1]); ) 程序的运行结果是________。
( B )
2、以下选项中不能正确把cl定义成结构体变量的是________。
( C )
3、若有以下说明语句:
struct date
{
int year;
int month;
int day;
} brithday;
则下面的叙述不正确的是_____.
( B )
4、以下对枚举类型名的定义中正确的是______。
( B )
5、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu {
int i;
int name;
} st,*p; p=&st;
( D )
6、若有以下说明和语句:
struct st
{
int n;
char *ch;
}
;
struct st a[3]
{
5,"abc",7,"def",9,"ghk"
}
,*p=a 则值为6的表达式是______。
( D )
7、有以下程序
#include <stdio.h>
main()
{
struct stu
{
char name[9];
char sex;
double score[2];
}
;
struct stu a={"zhao",'m',85.0,90.0},b={"qian",'f',95.0,92.0};
b=a;
printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是______。
( B )
8、定义file *fp; 则文件指针fp 指向的是________。
( A )
9、以下关于逻辑运算符两侧运算对象的叙述中正确的是________。
( C )
10、enum a
{
sum=9,mon=-1,tue
}
;
定义了________。
九、程序题 (共10题,每题1分,共计10分)
( D )
1、下面程序段的运行结果是________. char a[7]="abcdef"; char b[4]="abc"; strcpy(a,b); printf("%c",a[5]);
( B )
2、阅读下面的程序
main()
{
int i,j;
float x,y;
scanf("%f,%f",&i,&j);
scanf("%f,%f",&x,&y);
printf("i=%d,j=%d\n",i,j);
printf("x=%f,y=%f\n",x,y);
}
如果从键盘上输入 32,18<回车> 12.5,-4.3<回车> 则程序的运行结果是________。
( B )
3、以下程序的输出结果是
char cchar(char ch)
{
if(ch>=‘a’&&ch<=‘z') ch=ch-‘a'+‘a';
return ch;
}
main()
{
char s[]="abc+abc=defdef",*p=s;
while(*p)
{
*p=cchar(*p);
p++;
}
printf("%s\n",s);
}
( D )
4、有以下程序
#include <stdio.h>
void fun(char *t, char *s)
{
while(*t!=0) t++;
while((*t++=*s++)!=0);
}
min()
{
char ss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);
printf("%s,%s﹨n",ss,aa);
}
程序的运行结果是________。
( D )
5、若有以下定义和语句,则输出结果是______。
int **pp,*p,a=10,b=20; pp=&p; p=&a; p=&b; printf("%d\n",*p,**pp);
( C )
6、请读程序:
#include<stdio.h>
#include<string.h>
void fun(char * w,int m) {
char s,* p1,* p2;
p1=w;
p2=w+m-1;
while(p1<p2) {
s=* p1++;
*pl=* p2 --;
* p2=s;
}
}
main( )
{
char a[]="abcdefg";
fun(a,strlen(a));
puts(a);
}
上面程序的输出结果是________。
( D )
7、下面程序的输出结果是_______。
main( )
{
extern int m;
m+=2;
f( );
printf("%d\n",m);
}
int m=7;
f( )
{
printf("%d&",m*m);
m+=m;
}
( B )
8、以下程序的输出结果是______。
main()
{
char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;
int i ;
i=5;
p=a+i;
printf("%s\n",p-1);
}
( D )
9、有以下程序
void f(int x,int y)
{
int t;
if(x<y)
{
t=x;
x=y;
y=t;
}
}
main()
{
int a=4,b=3,c=5;
f(a,b);
f(a,c);
f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
执行后输出的结果是______。
( B )
10、有以下程序
main()
{
int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++)
{
ptr=a+i;
scanf("%d",*ptr);
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++) printf("%2d",a[i][j]);
printf("\n");
}
}
若运行时输入:1 2 3<回车>,则输出结果是______。
相关标签:
- C语言
- 西安外国语大学
- 期末相关题目