1、程序char c[5]={‘a’,’b’,’’,’c’,’’}; printf(“%s”,c);的运行结果是:
答案:(D)
A、'a''b'
B、ab
C、ab c
D、ab
2、以下程序的输出结果是:#include main(){ int a=2,c=5; printf("a=%%d,b=%%d ",a,c);}
答案:(D)
A、a=%2,b=%5
B、a=2,b=5
C、a=%%d,b=%%d
D、a=%d,b=%d
3、有以下程序:main(){ int y=10; while(y--) ; printf(“y=%d ”,y);}程序执行后的输出结果是:
答案:(B)
A、y=0
B、y=-1
C、y=1
D、while构成无限循环
4、下列程序的输出结果是:main( ) { int a=7,b=5; printf("%d ",b=b/a);}
答案:(C)
A、5
B、1
C、0
D、不确定值
5、设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为:
答案:(D)
A、float
B、char
C、int
D、double
6、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是:
答案:(B)
A、INPUT x、y、z;
B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);
D、read("%d%d%d",&x,&y,&z);
7、设变量x和y均已经正确定义并赋值。以下if语句中,在编译时将产生错误信息的是:
答案:(C)
A、if(x++);
B、if(x>y &&y!=0)x++;
C、if(x>0) x-- else y++;
D、if(y<0){;} else x++;
8、以下程序的输出结果是:main(){ int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d ",a,b);}
答案:(B)
A、6,1
B、2,1
C、6,0
D、2,0
9、判断字符串a是否大于b,应当使用:
答案:(D)
A、if (a>b)
B、if (strcmp(a,b))
C、if (strcmp(b,a)>0)
D、if (strcmp(a,b)>0)
10、下列说法中正确的是:
答案:(D)
A、一个数组能够存储许多不同类型的值
B、数组的下标可以是float数据类型
C、如果初始化值列表中的个数少于数组的元素的个数,C编译器会自动补齐
D、初始化值列表中的值的个数多于数组元素的个数是错误的
11、表示关系12<=x<=y的C语言表达式为:
答案:(B)
A、(12<=x)&(x<=y)
B、(12<=x)&&(x<=y)
C、(12<=x)|(x<=y)
D、(12<=x)||(x<=y)
12、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是:
答案:(B)
A、大写字母
B、连接符
C、数字字符
D、下划线
13、以下程序的输出结果为:main( ){ int i=010,j=10; printf("%d,%d ",i++,j--);}
答案:(C)
A、11,9
B、9,10
C、8,10
D、9,9
14、表达式3.6-5/2+1.2+5%2的值是:
答案:(D)
A、4.3
B、4.8
C、3.3
D、3.8
15、当调用函数时,实参是一个数组名,则向函数传送的是:
答案:(B)
A、数组的长度
B、数组的首地址
C、数组每一个元素的地址
D、数组每个元素的值
16、以下说法中正确的是:
答案:(C)
A、C语言程序中是从第一定义的函数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义
C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分
17、以下定义语句中正确的是:
答案:(C)
A、char a='A' b='B';
B、float a=b=10.0;
C、int a=10,*b=&a;
D、float *a,b=&a;
18、为避免嵌套的条件分支语句if…else的二义性,C语言规定,C程序中的else总是与____组成配对关系。
答案:(A)
A、其上面距它最近的,并且没有其他else与其配对的if相配对
B、在同一行上的if
C、缩排位置相同的if
D、在其之前未配对的if
19、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为:
答案:(C)
A、0
B、1
C、2
D、3
20、若i为整型变量,则以下循环执行次数是:for(i=2;i==0;) printf("%d",i--);
答案:(B)
A、无限次
B、0次
C、1次
D、2次
21、设有说明 int (*ptr)();其中标识符ptr是:
答案:(B)
A、是一个指向整形变量的指针
B、是一个指针,它指向一个函数值是int的函数
C、是一个函数名
D、定义不合法
22、设 int x=1, y=1; 表达式(!x||y--)的值是:
答案:(B)
A、0
B、1
C、2
D、-1
23、请读程序: main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; } printf("a=%d,b=%d ",a,b);}
答案:(A)
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=0
24、有以下程序main(){ int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++){ printf("%d ",m[k][i]); }}执行后输出结果是:
答案:(C)
A、4 5 6
B、2 5 8
C、3 6 9
D、7 8 9
25、若执行下面程序时:int x;scanf("%d",&x);if(x++ > 5){ printf( "%d ",x)};else{ printf("%d ",++x)};从键盘上输入5,则输出是:
答案:(A)
A、7
B、6
C、5
D、4
26、已知职工记录描述如下,在C中,系统为变量w分配( )字节的空间。struct worker{ int no; char name[20]; char sex;} w;
答案:(A)
A、28
B、20
C、25
D、6
27、以下程序的输出结果是:char s[] = "abcde";s += 2;printf("%d ",s[0]);
答案:(D)
A、输出字符a的ASCII码
B、输出字符c的ASCII码
C、输出字符c
D、程序出错
28、设有以下定义:#define N 3 #define Y(n) ((N+1)*n)则执行语句:z=2 * (N+Y(5+1));后,z的值为:
答案:(C)
A、出错
B、42
C、48
D、54
29、以下代码的输出结果为:int x = 10,y = 10;for(int i = 0; x > 8; y = ++i){ printf(“%d %d”, x-- , y); }
答案:(D)
A、10 1 9 2
B、9 8 7 6
C、9 10 9 10
D、10 10 9 1
30、设变量定义为int x , *p = &x;则&(*p)相当于:
答案:(C)
A、*(&x)
B、*p
C、p
D、x
31、在C语言程序中,以下说法正确的是:
答案:(B)
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数的调用都不可以嵌套
D、函数的定义和函数的调用都可以嵌套
32、如有定义int * p = malloc(15);p当int型数组使用,最多可以使用多少元素:
答案:(A)
A、3
B、4
C、15
D、16
33、有以下程序main(){ int k=4,n=0; for(;n < k;) { n++; if(n%3!=0) continue; k--; } printf("%d,%d ",k,n);}程序运行后的输出结果是:
答案:(C)
A、1,1
B、2,2
C、3,3
D、4,4
34、以下错误的描述是:函数调用可以:
答案:(D)
A、出现在执行语句中
B、出现在一个表达式中
C、做为一个函数的实参
D、做为一个函数的形参
35、动态分配内存,定义一个int型的包含12个元素的数组,如下定义正确的是:
答案:(A)
A、int *p = malloc(sizeof(int)*12);
B、int a[12] = malloc(12,sizeof,int);
C、int a[12] = calloc(12,sizeof(int));
D、int *p = calloc(sizeof(int)*12)
36、有以下程序main(){ int i; for(i=1;i<40;i++) { if(i++%5==0) if(++i%8==0) printf("%d ",i); } printf(" ");}执行后的输出结果是:
答案:(C)
A、5
B、24
C、32
D、40
37、下面选项中正确的赋值语句是(设 char a[5],*p=a;):
答案:(A)
A、p="abcd";
B、a="abcd";
C、*p="abcd";
D、*a="abcd";
38、请读程序:#include f(int b[],int n){ int i,r; r=1; for(i=0;i<=n;i++) r=r*b[i]; return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d ",x);}上面程序的输出结果是:
答案:(B)
A、720
B、120
C、24
D、6
39、有以下程序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 ",a,b,c);}执行后输出结果是:
答案:(D)
A、3,4,5
B、5,3,4
C、5,4,3
D、4,3,5
40、设有如下定义:struct jan{int a;float b;}c2,*p;若有p=&c2;则对c2中的成员a的正确引用是:
答案:(B)
A、(*p).c2.a
B、(*p).a
C、p->c2.a
D、p.c2.a
二、判断题(共10题,每题1分)
1、通过return语句,函数可以带回一个或一个以上的返回值。
答案:(F)
正确
错误
2、在循环体内使用break语句和continue语句的作用相同。
答案:(F)
正确
错误
3、条件运算符?和:是一对运算符,不能分开单独使用。
答案:(T)
正确
错误
4、枚举类型中的元素都具有一个整型值。
答案:(T)
正确
错误
5、函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。
答案:(T)
正确
错误
6、char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。
答案:(F)
正确
错误
7、continue 不是结束本次循环,而是终止整个循环的执行。
答案:(F)
正确
错误
8、在对二维数组初始化时,不可以省略行数,但能省略列数
答案:(F)
正确
错误
9、条件表达式不能取代一般if的语句。
答案:(F)
正确
错误
10、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。
答案:(T)
正确
错误