2012C语言程序设计试题
1.一个C程序的执行是从( )
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C.本程序的main函数开始,到本程序文件的最后一个函数结束 D.本程序文件的第一个函数开始,到本程序main函数结束 2.以下叙述正确的是:( )
A.在C程序中,main函数必须位于程序的最前面 B.程序的每行中只能写一条语句 C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误 3.以下叙述不正确的是:( )
A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面 4.C语言规定:在一个源程序中,main的位置( ) A.必须在最开始
B.必须在系统调用的库函数后面 C.可以任意 D.必须在最后
5.一个C语言程序是由( )
A.一个主程序和若干子程序组成 B.函数组成
C.若干过程组成
D.若干子程序组成
6.C源程序的基本单位是_______
7.一个C源程序中至少包括一个_______
8.在一个C源程序中,注释部分两侧的分界符分别为_____和____
9.在C语言中,输入操作是由库函数______ 完成的,输出操作是由库函数_____ 完成的
运算符与表达式
1.若x,i,j和k都是int型变量,则计算下面表达式后,x的值为( ) x=(i=4,j=16,k=32)
A.4 B.16 C.32 D.52 2.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )
A.7 B.8 C.6 D.2 3.下面四个选项中,均是不合法的用户标识符的选项的是:( )
A.A p_o do B.float lao _A
C.b-a goto int D._123 temp INT
4.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )
A.必须为字母
B.必须为下划线
C.必须为字母或下划线
D.可以是字母、数字和下划线中的任意一种
5.下面四个选项中均是不合法整型常量的选项是( )
A.160 -0xffff 011 B.-0xcdf 01a 0xe C.-01 986,012 0668 D.-0x48a 2e5 0x 6.下面四个选项中均是不合法整型常量的选项是( )
A.-0f1 -0xffff 0011 B.-0xcdf 017 12,456 C.-018 999 5e2 D.-0x48eg -068 03f 7.下面四个选项中,均是不合法的浮点数的选项是( )
A.160 0.12 e3 B.123 2e4.2 e5 C.-18 123e4 0.0 D.-e3 234 1e3 8.下面四个选项中,均是合法的浮点数的选项是( )
A.+1e+1 5e-9.4 03e2 B.-60 12e-4 -8e5 C.123e 1.2e-4 -8e5 D.-e3 8e-4 5.e-0 9.下面四个选项中,均是合法转义字符的选项是( )
A.'\\\ ?\\\\' ?\\n' B.?\\' ?\\017' ?\\\C.'\\018' ?\\f' ?xab' D.'\\\\0' ?\\101' ?x1f' 10.下面四个选项中,均是不合法的转义字符的选项是( )
A.'\\\ ?\\\\' ?\\xf' B.'\\1011' ?\\' ?\\a' C.'\\011' ?f' ?\\}' D.'\\abc' ?\\101' ?x1f' 11.下面正确的字符常量是( )
A.?c\ B.'\\\\\ C.'w' D.\
12.下面四个选项中,均是正确的数值常量或字符常量的选项的是( )
A.0.0 0f 8.9e ?&' B.\ 3.9E-2.5 1e1 ?\\\C.'3' 011 0xFF00 0a D.+001 0xabcd 2e2 50 13.下面不正确的字符串常量是( )
A.'abc' B.\ C.\ D.\ “ 14.若有代数式3ae/bc,则不正确的C语言表达式是( )
A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/b*3
15.已知各变量的类型说明如下:int k,a,b; unsigned long w=5; double x=1.42;则以下不符合C语言语法的表达式是( )
A.x%(-3) B.w+=-2
C.k=(a=2,b=3,a+b) D.a+=a-=(b=4)*(a=3)
16.已知各变量的类型说明如下:int i=8,k,a,b; unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是( )
A.a+=a-=(b=4)*(a=3) B.a=a*3=2 C.x%(-3) D.y=float(i) 17.以下不正确的叙述是( )
A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变 D.当从键盘输入数据时,对整型变量只能输入整型数值,对实型变量只能输入实型数值
18.以下正确的叙述是( )
A.在C程序中,每行中只能写一条语句
B.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C.在C语程序中,无论是整数还是实数,都能被准确无误地表示 D.在C程序中,%是只能用于整数运算的运算符 19.以下符合C语言语法的赋值表达式是( )
A.d=9+e+f=d+9 B.d=9+e,f=d+9
C.d=9+e,e++,d+9 D.d=9+e++=d+7
20.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为( )
A.D B.68 C.不确定的值 D.C 21.在C语言中,要求运算数必须是整型的运算符是( )
A./ B.++ C.!= D.%
22.若以下变量均是整型,且num=sum=7;则计算表达式SUM=num++,SUM++,++num后sum值为( )
A.7 B.8 C.9 D.10 23.若有说明语句:char c='\\72';则变量c( )
A.包含1个字符 B.包含2个字符
C.包含3个字符 D.说明不合法,c的值不确定 24.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( ) A.2.500000 B.2.750000 C.3.500000 D.0.000000
25.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( ) A.int B.float C.double D.不确定 26.在C语言中,char型数据在内存中存储形式是( )
A.补码 B.反码 C.原码 D.ASCII码 27.表达式18/4*sqrt(4.0)/8值的数据类型为( )
A.float B char C.double D.不确定 28.设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为( ) A.float B char C.int D.double
29.若有以下定义,则能使值为3的表达式为3的表达式是( ) int k=7,x=12; A.x%=(k%=5) B.x%=(k-k%5) C.x%=k-k%5 D.(x%=k)-(k%=5) 30.设以下变量均为int类型,则值不等于7的表达式是( )
A.(x=y=6,x+y,x+1) B.(x=y=6,x+y,y+1) C.(x=6,x+1,y=6,x+y) D.(y=6,y+1,x=y,x+1)
31.在c语言中(以16位pc机为例),一个char型数据在内存中所占的字节数为( ),一个int型数据在内存中所占的字节数为( ), 一个float型数据在内存中所占的字节数为( ), 一个double型数据在内存中所占的字节数为( ).
32.有以下定义,则计算表达式y+=y-=m*=y后的y值是( )。int m=5,y=2; 33.若s是int型变量,s=6;则下面表达式的值为( )s%2+(s+1)%2
34.若a是int 型变量,则下面表达式的值为( )(a=4*5,a*2),a+6 35.若x和a均是int型变量,则计算式(1)后的x的值为( ),计算表达式(2)后的x的值为( )。
(1)x=(a=4,6*2) (2) x=a=4,6*2
36.若a.b和c均是int型变量,则计算表达式后,a值为( ),b值为( ),c值为( ).
a=(b=4)+(c=2)
37.若a是int型变量,且a的初值为6,则计算表达式后a的值为( )。 a+=a-=a*a 38.若a是int型变量,则计算表达式后a的值为( )。 a=25/3%3
39.若x和n均是int型变量,且x和n的初值均为5,则精神表达式后x的值为( ),难得值为( )。x+=n++ 40.若有定义:int b=7;float a=2.5,c=4.7;则下面表达式的值为( )。 a+(int)(b/3*(int)(a+c)/2)%4 41.若定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值( )。(float)(a+b)/2+(int)x%(int)y 42.若有定义:char c='\\010';则变量c中包含的字符个数为( ).
43.若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值( ) (x+y)%2+(int)a/(int)b 44.若x和n均为int型变量,且x的初值为12,n的初值为5,则计算表达式后x的值为( ) x%=(n%=2)
45.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为( ) 46.C语言中的标识符只能由三种字符组成,它们是( ),( )和( ).
47.已知字母a的ASII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'+-'3'的值为( ).
48.把以下多项式写成只含七次乘法运算,其余皆为加.减运算的表达式为 ( ) 5x^7+3x^6-4x^5+2x^x^3-6x^2+x+10
49.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为( )
50.若有定义:int e=1,f=4,g=2;float m=10.5,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是( )
51.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为( ) 52.表达式pow(2.8,sqrt(double)(x)))值的数据类型为( )
53.假设m是一个三位数,从左到右用a、b、c表示各位的数字,则从左到右各个数字是bac的三位数的表达式是( )
顺序结构程序设计
注:□代表空格;
1.putchar函数可以向终端输出一个( )
A.整型变量表达式值 B.实型变量值
C.字符串 D.字符或字符变量值 2.以下程序的输出结果是( ) main( ) {
printf(“\\n*s1=s*',“chinabeijing\ printf(“\\n*s2=%-5s*\
}
A.*s1=chinabeijing□□□* *s2=**chi* B.*s1=chinabeijing□□□* *s2=chi□□* C.*s1=*□□chinabeijing* *s2=□□chi*
D.*s1=□□□chinabeijing* *s2=chi□□*
3.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列.如果字符串长度以大于5,则输出按方式( );如果字符串长度小于5,则输出按方式( )
A.从左起输出该字串,右补空格
B.按原字符长从左向右全部输出 C.右对齐输出该字串,左补空格 D.输出错误信息
4.x和y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( ) A.scanf(“%d%s,\,&z); B.scanf(“-*%d%f\
C.scanf(“%x%d*%o\
D.scanf(“%x%o%6.2f\,&z);
5.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( );
int a1,a2;char c1;c2;
scanf(“%d%c%d%c\
A.10A□20B
C.10A20B
6.已有定义int x;float y;且执行scanf(“=%f\语句时,从第一列开始输入数据12345□678<回车>,则x的值为( 1 ),y的值为( 2 )
(1)A.12345 B.123 C.45 D.345
(2)A.无定值 B.45.000000 C.678.000000 D.123.000000 7.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( )(注:□表示空格,
int a1,a2; char c1,c2; scanf(“%d%d\,&a2); scanf(“%c%c\
A.1020AB
8.已有程序段和输入数据的形式,程序中输入语句的正确形式应当为( ) main( ) {
int a;float f;
printf(“\\nInput number:\
}
输入语句 printf(“\\nf=%f,a=%d\\n\输入的数据为4.5
A.scanf(“%d,%f\ B.scanf(“%f,%d\ C.scanf(“%d%f,&a,&f); D.scanf(“%f%d\ 9.阅读以下程序,当输入数据形式为:25,13,10
int x,y,z;
scanf(“%d%d%d\ printf(“x+y+z=%d\\n\
}
A.x+y+z=48 B.x+y+z=35 C.x+z=35 D.不确定值
10.根据题目中已给出的数据的输入和输出形式,程序中输入输出的语句的正确内容是( ) main( ) {
int x; float y;
printf(“enter x,y:\
输入语句 输出语句
}
输入为:2□3.4 输出为:x+y=5.40
A.scanf(“%d,%f\\\nx+y=4.21\B.scanf(“%d%f\\\nx+y=4.2f\C.scanf(“%d%f\\\nx+y=6.1f\Dscanf(“%d%3.1f\\\nx+y=%4.2f\11.以下说法正确的是( )
A.输入项可以为一个实型常量,如scanf(“%f,3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d);
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f\D.当输入数据时,必须指明变量的地址,如scanf(“%f\
12.有输入语句:scanf(“a=%d,b=%d,c=%d\为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应是( )
A.132
C.a=1□b=3□c=2
A.ch='123'; B.ch='\\xff'; C.ch='\\08'; D.ch='\\' 14 .已知ch是字符变量,下面不正确的赋值语句是( )
A.ch='a+b'; B.ch='\\0'; C.ch='7'+'9' D.ch=5+9; 15.若有以下定义,且各变量均有初值,则正确的赋值语句是( ) int a,b; float x; A.a=1,b=2; B.b++; C.a=b=5 D.b=int(x); 16.设x,y均为float型变量,则以下不合法的赋值语句是( )
S.++a; B.y=(x%2)/10; C.x*=y+8; D.x=y=0; 17.设x,y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后x,y,z的值是:( ) A.x=10 y=15 z=10 B.x=10 y=10 z=10 C.x=10 y=15 z=15 D.x=10 y=5 z=10 18.以下程序的输出结果为( ) main( ) {
short a;
a=-4;
printf(\
}
19.以下程序的输出结果为( )
main( )
{ printf(\ 3.14, 3.15); } 20. 以下程序的输出结果为( )
main( ) {
char c='a';
printf(\
}
21.已有定义int d=-2;执行以下语句后的输出结果是( )
printf(\
22.以有定义int d=-2;执行以下语句后的输出结果是( ) printf(\
23.以有定义float d1=3.5,d2=-3.5;执行以下语句后的输出结果是( ) printf(\printf(\24. 以下程序输出结果为( ) main( ) {
int x=1,y=2;
printf(\,x+y); printf(\}
25. 以下程序的输出结果为( ) main( ) {
int x=10; float pi=3.1416;
printf(\ printf(\printf(\ printf(\printf(\ printf(\printf(\ printf(\
}
26.假设变量a和b均为整型,以下语句可以不借助任何变量把a,b中的值进行交换,请填空. a+=( ) b=a-( ); a-=( );
27.设变量a,b,c均为整型,以下语句借助中间变量t把a,b,c中的值进行交换,即:把b中的值给a,把c中的值给b,把a中的值给c.例如:交换前a=10,b=20,c=30,交换后a=20,b=30,c=10,请填空.
( ); a=b; b=c; ( );
28.设x,y,z均为int型变量,m为long型变量,则在16位机上执行下面赋值语句后,y=( ),z=( ),m=( ).
y=(x=32767,x-1); z=m=0xffff; 29.如有int x;则执行下面语句后x值是( ) x=7; x+=x-=x+x;
30.若有int a,b;则以下语句的功能是( )
a+=b; b=a-b; a-=b;
31.在scanf函数调用语句中,可以在格式字符和%之间加一星号,它的作用是( ); 当输入以下数据: 10_ _20_ _30_ _40
32.若有以下定义和语句,为使变量c1的到字符'A',变量c2得到字符'B'正确的格式输入形式是( )
char c1,c2; scanf(\
33.执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5,y=71.82, c1='A', c2='a',正确的数据输入形式是( )
mian( ) {
int a,b; float x,y; char c1,c2; scanf(a=%d b=%d\scanf(\
scanf(\ c2=%c\
printf(\
}
34.已有定义int i,j;float x;为了使i=10,j=12,x=410.34,其对应的scanf函数调用语句的输入形式是( )
scanf(\
选择结构程序设计
1.逻辑运算符两侧运算对象的数据类型( )
A.只能是0和1 B.只能是0或非0正数 C.只能是整型或字符型数据 D.可以是任何类型的数据 2.下列运算符中优先级最高的是( )
A.< B.+ C.&& D.!=
3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假\的表达式是( ) A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B.(x>=1)||(x<=10)||(x>=200)||(x<=210)
C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)
4.表示图中坐标轴上阴影部分的正确表达式是( )
A.(x<=a)&&(x>=b)&&(x<=c) B.(x<=a)||(b<=x<=c) C.(x<=a)||(x>=b)&&(x<=c) D.(x<=a)&&(b<=x<=c 5.判断char型量ch是否为大写字母的正确表达式是( )
A.?A?<=ch<=?Z? B.(ch>=?A?)&(ch<=?Z?) C.(ch>=?A?)&&(ch<=?Z?) D.(?A?<=ch)AND(?Z?>=ch)
6.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( ) A.?x?&&?y? B.x<=y C.x||y+z&&!y D.!(x
A.0 B.语法错误 C.1 D.“假” 8.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( )
A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2
9.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的值为( ) A.1 B.2 C.3 D.4 10.下列运算符中优先级最低的是( )优先级最高的是( )
A.? B.&& C.+ D.!= 11.以下程序的运行结果是( ) #include
int a,b,d=241;
a=d/100%9; b=(-1)&&(-1); printf(“%d,%d”,a,b); }
A.6,1 B.2,1 C.6,0 D.2,0 12.执行以下语句后a的值为( ) int a,b,c;
a=b=c=1; ++a||++b&&++c;
A.错误 B.0 C.1 D.2 13.执行以下语句后a的值为( ① ),b的值( ② ) int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y ①A.5 B.0 C.2 ②A.6 B.0 C.1 14.以下不正确的if语句形式是( ) A.if(x>y&&x!=y); B.if(x==y)x+=y; C.if(x!=y)scanf(“%d“,&x) else scanf(“%d”,&y); D.if(x 15.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是( ) if(x>y) z=x;x=y;y=z; A.x=10,y=20,z=30 B.x=20,y=30,z=30 C.x=20,y=30,z=10 D.x=20,y=30,z=20 16.以下语句语法正确的是:( ) A.if(x>0) printf(“%f”,x) else printf(“%f”,-x); B.if(x>0) {x=x+y;printf(“%f”,x);} else printf(“%f”,-x) C.if(x>0) {x=xy; printf(“%f”,x);}; else printf(“%f”,-x); D.if(x>0) {x=x+y;printf(“%f”,x)} else printf(“%f”,-x); 17.请阅读以下程序,该程序( ) main() { int a=5,b=0,c=0; if(a+b+c) printf(“***\\n”); else printf(“$$$\\n”); } A.有语法错误不能通过编译 B.可以通过编译但不能通过连接 C.输出*** D.输出$$$ D.1 D.4 18.以下程序的运行结果是( ) main() { int m=5; if(m++>5) printf(“%d\\n”,m);else printf(“%d\\n”,m--); } A.4 B.5 C.6 D7 19.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( ) if(a else x=7; A.1 B.2 C.3 20.有一函数关系如下: x-1 (x<0) y={ x (x=0) x+1 (x>0) 则下面程序段中能正确表示上面关系的是( ) A.y=x+1; if(x>=0) if(x==0) y=x; else y=x-1; B.y=x-1 if(x!=0) if(x>0) y=x+1; else y=x; C.if(x<=0) if(x<0) y=x-1; else y=x; else y=x+1; D.y=x; if(x<=0) if(x<0) y=x-1; else y=x+1; 21.以下程序的输出结果是( ) main() { int a=100,x=10,y=20,ok1=5,ok2=0; if(x if(y!=10) if(!ok1) a=1; else if(ok2) a=10; a=-1; printf(“%d\\n”,a); } A.1 B.0 C.-1 22.以下程序的输出结果是( ) main() { int x=2,y=-1,z=2; if(x if(y<0) z=0; else z+=1; printf(“%d\\n”,z); D.6 D.值不确定 } A.3 B.2 C.1 D.0 23.为了避免在嵌套的条件语句if--else中产生二义性,C语言规定:else子句总是与( )配对。 A.缩进排位置相同的if B.其之前最近的if C.其之后最近的if D.同一行上的if 24.以下不正确的语句为( ) A.if(x>y); B.if(x=y)&&(x!=0) x+=y; C.if(x!=y) scanf(“%d”,&x); else scanf(“%d”,&y); D.if(x 25.运行下面程序后输入为2.0 { float a,b; scanf“%f”,&a); if(a<0.0) b=0.0; else if((a<0.5)&&(a!=2.0)) b=1.0/(a+2.0); else if(a<10.0) b=1.0/x; else b=10.0; printf(“%f\\n”,y); } A.0.000000 B.0.500000 C.1.000000 26.若运行时给变量x输入12,则以下程序的运行结果是( main() { int x,y; scanf(“%d\\n”,y); } A.0 B.22 C.12 27.以下程序的运行结果是( ) main() {int k=4,a=3,b=2,c=1; printf(“\\n%d\\n”,k A.4 B.3 C.2 28.执行以下程序段后,变量a,b,c的值分别是( ) int x=10,y=9; int a,b,c; a=(-x= =y++)?- -x:++y; x=x++;c=y; A.a=9,b=9,c=9 B.a=8,b=8,c=10 C.a=9,b=10,c=9 D.a=1,b=11,c=10 29.int w,x,y,z,m;则执行以下语句后m的值为( ) w=1;x=2;y=3;z=4; m=(w A.1 B.2 C.3 D.0.250000 ) D.10 D.1 D.4 30.若w=1,x=2,y=3,z=4,则表达式w A.4 B.3 C.2 D.1 31.执行以下程序段后的输出结果是:( ) int w=3,z=7,x=10; printf(“%d ”,x>10?x+100:x-10); printf(“%d ”,w++||z++); printf(“%d ”,!w>z); printf(“%d ”,w&&z); A.0 1 1 1 B.1 1 1 1 C.0 1 0 1 D.0 1 0 0 32.当a=3,b=2,c=1时,表达式f=a>b>c的值是________ 33.当a=5,b=4,c=2时,表达式a>b!=c的值是________ 34.以下程序的运行结果是___________ main() {int x=1,y,z; x*=3+2; printf(“%d\\t”,x); x*=y=z=5; printf(“%d\\t”,x); x=y==z; printf(“%d\\n”,x);} 35.在C语言中,表示逻辑“真”用__________ 36.设y为int型变量,请写出描述“y是奇数”的表达式__________ 37.C语言提供的三种逻辑运算符是____ _____ _____ 38.设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式____________ 39.设int x,y,z;请描述“x,y和z中有两个为负数”的表达式____________ 40.已知A=7.5,B=2,c=3.6,表达式A>B&&C>A||AB的值是________ 41.若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是____________ 42.若a =2,b=4,则表达式(x=a)||(y=b)&&0的值是___________ 43.若a=1,b=4,c=3,则表达式!(a 48.当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后;n的值为______,m的值为________ 49.以下程序运行结果是______ main() { int a1,a2,b1,b2; int i=5,j=7,k=0; a1=!k; a2=i!=j; printf(“a1=%d\\t a2=%d\\n”,a1,a2); b1=k&&j; b2=k||j; printf(“b1==%d\\t b2=%d\\n”,b1,b2); } 51.以下程序的运行结果是:_________ main() { int x,y,z x=1;y=1;z=0; x=x||y&&z; printf(“%d,%d”,x,x&&!y||z); } 52.有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值是______ 循环控制 1.设有程序段 int k=10; while (k=0) k=k-1; 则下面描述中正确的是 ( ) A while循环执行10次 B 循环是无限循环 C 循环体语句一次也不执行 D 循环体语句执行一次 2.设有以下程序段 int x=0,s=0; while(!x!=0)s+=++x;printf(\则( ) A 运行程序段后输出0 B 运行程序段后输出1 C 程序段中的控制表达式是非法的 D 程序段执行无限次 3、语句while(!E);中的表达式!E特等价于( ) A、E==0 B、E!=1 C、E!=0 D、E==1 4、下面程序段的执行结果是( ) a=1;b=2;c=2; while(a printf(\ A、1,2,0 B、2,1,0 C 、1,2,1 D、2,1,1 5、下面程序段的运行结果是( ) x=y=0; while(x<15) y++,,x+=++y; printf(\ A、20,7 B、6,12 C、20,8 D 8,20 6、下面程序段的运行结果是( ) int n=0; while (n++<=2); printf(\ A,2 B、3 C、4 D 有语法错误 8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等的数时结束循环,请选择填空。 main() { int a,b,t; scanf(“%d,%d”,&a,&b); while( ) { if(a>b) { t=a; a=b; b=t; } printf(“%d,%d\\n”,a,b); scanf(“%d,%d”,&a,&b); } } A、!a=b B、a!=b C、a==b D、a=b 9、下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并输出m,n中较大者,请选择填空。 #include main( ) { int m=0,n=0; char c; while((_①_)!=?\\n?) { if(c>=?A?&&c<=?Z?) m++; if(c>?a?&&c<=?z?) n++; } printf(“%d\\n”,m ①A. c==getchar( ) B.getchar( ) C.c=getchar( ) D.scanf(“%c”,c) ②A. n:m B.m:n C.m:m D.n:n 11.下面程序的功能是在输入的一批正整数中求出最大者,输入0时结束,请选择填空 main( ) { int a,max=0; scanf(“%d”,&a); while(____) { if(max } A.a==0 B.a C!a==1 D.!a 12、下面程序的运行结果是( ) main( ) { int num=0; while(num<=2) num++; printf(“%d”,num); } A.0 B.1 C.2 D.3 14.C语言中while和do-while循环的主要区别是( ) A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do–while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 15 .以下程序段() x=-1; do{ x=x*x; }while(!x); A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误 16、以下描述中正确的是( ) A.由于do-while循环中循环语句中只能是一条可执行语句,所以循环体内不能使用复合语句。 B.do-while循环由do开始,且while结束,在while(表达式)后面不能写分号。 C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作。 D.do-while循环中,根据情况可以省略while 17.若有以下后句 int x=3; do { print(\ } while(-x);则运行程序段() A.输出的是1 B.输出的是1和-2 C.输出的是3和0 D.死循环 18.下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环,填空。 main() { long int num; scanf(\ do{ if(__①_) printf(\ scanf(\ }while(__②__); } ①A.num0/10=3. B.num/100=3 C.num/10=3 D.num/10=3 ②A.!num B.num>0=0 C.!num=0 D.!num!=0 19.下面程序的运行结果是( ) main( ) { int y=10; do{y--;} while(--y); printf(\} A .-1 B.1 C.8 D.-8 21.下面程序的运行结果是( ) main() { int a=1,b=10, do{b-=a;a++;}while(b-,0); printf(\ } A.3.11 B.2,8 C.1,-1 D.4,9 22.下面有关for循环的正确描述是( ) A.for循环只能有于循环次数已经确定的情况 B.for 循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环的循环体语句中,可以包含多条语句,但必须花括号括起来 23.对for(表达式1; ; 表达式3)可理解为( ) A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3) C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3) 24.若i为整型变量,则以下循环执行的次数是( ) for(i=2; i=0; ) printf(“%d”, i--) A.无限次 B.0次 C.1次 D.2次 25.以下for循环的语句是( ) for (x=0,y=0 ; (y=123)&&(x<4) ; x++); A.是死循环 B.循环次数不定 C.4次 D.3次 26.以下不是死循环的语句是( ) A.for(y=0,x=1;x>++y;x=I++) I=x; B.for(; ;x++=I); C.while (1) {x++;} D.for(I=10; ;I--) sum+=I; 27.以下程序段的运行结果是( ) for (y=1; y<10; ) y=((x=3*y,x+1),x-1); printf(“x=%d,y=%d”,x,y); A. x=27,y=27 B.x=12,y=13 C.x=15,y=14 D.x=y=27 29.下列程序段不是死循环的是( ) A. int I=100; while(1) {I=I0+1; if(I>100)break; } B. for( ; ; ) C. int k=0; do{++k;}while(k>=0); D.int s=36; while(s); --s; 30.执行语句for(I=1;I++<4;);后变量I的值是( ) A.3; B.4 C.5 D.不定 31.下面程序的功能是计算1到50中是7的倍数的数值之和,请选择填空。 main() { int I,sum=0; for(I=1;I<=50;I++) if(______)sun+=I; printf(“%d”,sum); } A.(int)(i/7)=i/7 B.(int)i/7=i/7 C.i%7+0 D.i%7=0 32.下面程序的运行结果是( ) main( ) { int a; for(a=1;a<=5;a++) switch(a%5) { case 0: printf(“*”); break; case 1: printf(“#”); break; default: printf(“\\n”); case 2: printf(“&”); } } 34.下面程序的运行结果是( ) main() { int I,b,k=0; for(I=1;I<=5;I++) { b=I%2; while(b-->=0) k++; } printf(“%d,%d”,k,b); } A.3,-1 B.8-1 C.3,0 D.8,-2 35.以下正确的描述是( ) A. continue语句的作用是结束整个循环的执行 B. 只能在循环体内和switch语句体内使用break语句 C. 在循环体内使用break或continue语句 D. 从多层循环嵌套中退出时,只能使用goto语句 36.下面程序段( ) for(t=1;t<=100;t++) { scanf(“%d”,&x); if(x<0) continue; ptintf(“=”,t); } A. 当x<0时整个循环结束 B. x>=0时什麽也不输出 C. printf函数永也不执行 D. 最多允许输出100个非负整数 37.下面程序段( ) x=3; do{y=x--; if(!y) {printf(“x”); continue;} printf(“#”);} while(1<=x<=2); A.将输出## B.将输出##* C.是死循环 D.含有不合法的控制表达式 38.以下是死循环的是( ) A.for(I=1; ; ) {if(++I%2==0) continue; if(++I%3==0) break;} B.int I=32767; do{if(I<0) break;}while(++I); C.for(I=1; ; ) if(++I<10) continue; D.i=1; while(i--); 39.以下描述正确的是( ) A. goto语句只能用于退出多层循环 B. switch语句中不能出现continue语句 C. 只能用continue语句来终止本次循环 D. 在循环中break语句不能独立出现 41.下面程序的运行结果是( ) main() { int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20)break; if(b%3==1) {b+=3;continue;} b=-5; } ptintf(“%d\\n”,a); } A.7 B.8 C.9 D.10 42.下面程序的运行结果是( ) main() { int I,j,x=0; for(I=0;I<2;I++) { x++; for(j=0;j<=3;j++) { if ( j%2 ) continue; x++; } ) ptintf(“x=%d\\n”,x); } A.x=4 B.x=8 C.x=6 D.x=12 43.下面程序的运行结果是( ) main() { int I; for(I=1;I<=5;I++) { if(I%2) printf(“*”); else continue; printf(“#”); } printf(“$\\n”); } A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$ 44.下面程序的运行结果是( ) main() { int I,j,a=0; for(I=0;I<2;I++) { for(j=0;j<4;j++) { if (j%2) break; a++; } a++; } printf(“%d\\n”,a); } A.4 B.5 C.6 D.7 45.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空: int n=0,c; c=getchar( ); while( ) { if ( ) n++; c=getchar( );} 46.当运行以下程序段时,从键盘输入right? main() { int a,s,n,count; a=2;s=0;n=1;count=1; while(count<=7) {n=n*a;s=s+n;++count;} printf(“s=%d”,d); } 49.执行以下程序段以后,K值是:________________ k=1;n=263; do{k*=n; n/=10;}while(n); 50.下面程序段中循环体的执行次数是_______________ a=10; b=0; do{b+=2;a-=2+b;}while(a>0); 51.下面程序段的运行结果是:______________________ x=2; do{printf(“*”); x-;}while(!x==0); 52.下面程序段的运行结果是:_____________________ I=1; a=0; s=1; do {a=a+s*I;s=-s;I++;}while(!x<=10); printf(“a=a%d”,a); 53.当运行以下程序段时,从键盘输入1 2 3 4 5 -1 int I,x,y; I=x=y=0 do{ ++I; if(I%2!=0) {x=x+I; I++;} y=y+I++; }while(I<=7); printf(“x=%d,y=%d\\n”,x,y); 55.下面程序段的运行结果是______________________ int a,b,I; a=1; b=3; I=1; do{ printf(\ a=(b-a)*2+b; b=(a-b)*2+a; if(I++%2==0) printf(\ }while(b<100); 56.当运行以下程序,从键盘输入-1 0 { int a,b,m,n; m=n=1; scanf(“%d%d”,&a,&b); do{ if(a>0){m=2*n;b++;} else {n=m+n;a+=2;b++;} }while(a==b); printf(“m=%dn=%d”,m,n); } 58.下面程序段的运行结果是( ) for(a=1;I=-1;-1<=I<1;I++) { a++; printf(“-”,a); } printf(“-”,I); 59.若for循环体用以下形式表示:for(表达式1;表达式2;表达式3)循环体语句 则执行语句for(I=0;I<3;I++) printf(“*”);时, 表达式1执行(___)次,表达式3执行(____)次。 60.下面程序的功能是计算1-3+5-7+?-99+100的值,请填空。 main() { int I,t=1,s=0; for(I=1;I<=101;I+=2) {________; s=s+t; _________;} printf(“%d\\n”,s); } 61.下面程序的运行结果是___________ main() { int I,t,sum=0; for(t=I=1;I<=10;) { sum+=t; ++I; if(I%3==0) t=-I; else t=I; } printf(“sum=%d”,sum); } 62.下面程序的运行结果是____________ main() { int I; for(I=1;I<=5;I++) switch (I%2) { case 0: I++; printf(“#”); break; case 1: I+=2; printf(“#”) default: printf(“\\n”); } } 63.下面程序的运行结果是______________ main() { int I,j=4; for(I=j;I<=2*j;I++) switch(I%j) { case 0: case 1: printf(“*”); break; case 2: printf(“#”); } } 64.若从键盘输入65 14 { int m,n; printf(“Enter m,n:”); scanf(“%d%d”,&m,&n); while(m!=n) { while(m>n) m-=n; while(n>m) n-=m; } printf(“m=%d\\n”,m); } 65.下面程序的运行结果是____________ main() { int y,a; y=2;a=1; while(y-!=-1) { do {a*=y; a++;}while(y--); } printf(“%d,%d”,a,y); } 66.下面程序的运行结果是_____________ main() { int I.j; for(I=0;I<=3;I++) { for(j=0;j<=5;j++) { if(I==0‖j==0‖I==3‖j==5) printf(“ ”); else printf(“ “); } printf(“\\n”); } } 67.下面程序的运行结果是______________ #include for(I=4;I>=4;I--) { for(j=1;j<=I;j++)putchar(?#?);. for(j=1;j<=4-I;j++)putchar(?*?); putchar(?\\n?); } } 69.下面程序段的运行结果是_____________ I=1;s=3; do{ s+=I++; if(s%7==0) continue; else ++I;} while(s<15); printf(“%d”,I); 70.下面程序的运行结果是_______________ main() { int I=1; while(I<=15) if(++I%3!=2) continue; else printf(“%d”,I) ; printf(“n\\”); } 71.下面程序的输出结果是_______________ main() { int I,j,k=19; while(I=k-1) { k-=3; if (k%5==0) { I++; continue; } else if (k<5) break; I++; } Printf(“I=%d,k=%d\\n”,I,k); } 72.下面程序的运行结果是______________ main() { int a=10 , y =0 ; do{ a+=2; y+=a; if (y>50) break; }while(a=14); printf(“a=%d y=%d”,a,y); } 数组 1. 在C语言中,引用数组元素时,其数组下标的数据类型允许的是( ) A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 2. 以下对一维整型数组a的正确说法是( ) A .int a(10); B. int n=10,a[n]; C. int n;scanf(“%d”,&n);int a[n]; D. #define SIZE 10 int a[SIZE]; 3. 若有说明: int a[10];则对a数组元素的正确引用是( ) A .a[10] B. a[3.5] C. a(5) D. a[10-10] 4. 在C语言,一维数的定义方式为: 类型说明符 数组名 ; A .[常量表达式] B.[整型表达式] C.[整型常量]或[整型表达式] D.[整型常量] 5.以下能对一维数组a进行正确初始化的语句是( ) A .int a[10]=(0,0,0,0,0); B.int a[10]={}; C.int a[ ]={0}; D.int a[10]={10*1} 6. 以下对二维数组a正确说明是( ) A. int a[3][ ]; B. float a(3,4); C. double a[1][4]; D. float a(3)(4); 7.若有说明: int a[3][4];则对a数组元素的正确引用是( ) A. a[2][4] B. a[1,3] C. a[1+1][0] D. a(2)(1) 8.若有说明:int a[3][4];则对a数组元素的非法引用是( ) A. a[0][2*1] B. a[1][3] C. a[4-2][0] D. a[0][4] 9. 以下能对二维数组a正确初始化的语句是( ) A. int a[2][ ]={{1,0,1},{5,2,3}}; B. int a[ ][3]={{1,2,3},{4,5,6}}; C. int a[2][4]={{1,2,3},{4,5},{6}}; D. int a[ ][3]={{1,0,1},{ },{1,1}}; 10.以下不能对二维数组a进行正确初始化的语句是( ) A.int a[2][3]={0}; B.int a[ ][3]={{1,2},{0}}; C. int a[2][3]={{1,2},{3,4},{5,6}}; D. int a[ ][3]={1,2,3,4,5,6}; 11. 若有说明:int a[3][4]={0};则下面正确的叙述是( ) A.只有元素a[0][0]可行到初值0 B. 此说明语句不正确 C. 数组a中各元素都可得到初值,但其值不一定为0 D. 数组a中第个元素均可得到初值0 12. 若有说明:int a[ ][4]={0,0};则下面不正确的叙述是:( ) A.数组a的每个元素都可得到初值0 B. 二维数组的第一维大小为1 C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D. 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 13. 若有说明:int a[3][4]; 则数组a中各元素( ) A. 可在程序的运行阶段得到初值0 B.可在程序的编译阶段得到初值0 C.不能得到确定的初值 D.可在程序的编译或运行阶段得到初值0 14.以下各组选项中,均能正确定义二维实型数组a的选项是:( ) A. float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}}; B. float a(3,4); float a[3][4]; float a[ ][ ]={{0};{0}}; C. float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}}; D. float a[3][4]; float a[3][ ]; float a[ ][4] 15.若二数组a有m列,则计算任意元素a[I][j]在数组中位置的分式为__________ A.I*m+j B.J*m+I C.I*m+j-1 D.I*m+j+1 16.对以下说明语句的正确理解是( )int a[10]={6,7,8,9,10}; A.将5个初值依次与给a[1]至a[5] B.将5个初值依次与给a[1]至a[4] C.将5个初值依次与给a[6]至a[10] D.因为数组长度与初值的个数不同,所以此语句不正确 17.以下不正确的定义语句是:( ) A.double x[5]={2.0,4.0,6.0,8.0,10.0}; B.int y[5]{0,1,3,5,7,9}; C.char cl[ ]={?1?,?2?,?3?,?4?,?5?}; D.char c2[ ]={?\\x10?,?\\xa?,?\\x8?}; 18.若有说明:int a[ ][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( ) A.2 B.3 C.4 D.无确定值 19.若二维数组a有m列,则在a[I][J]前的元素个数为( ) A.J*m+I B.I*m+j C.I*m+j-1 D.I*m+j+1 20.定义如下变量和数组:int k; int a[3][3]={1,2,3,4,5,6,7,8,9,}; 则下面语句的输出结果是( )for(k=0;k<3;k++) printf(“%d”,a[k][2-k]); A.3 5 7 B.3 6 9 C.1 5 9 D.1 4 7 21.以下正确的定义语句是( ) A.int a[1][4]={1,2,3,4,5}; B.float x[3][ ]={{1},{2},{3}} C.long b[2][3]={{1},{1,2},{1,2,3}}; D.double y[ ][3]={0}; 22.下面程序的运行结果是( ) main() { int a[6],I; for(I=1;I<6;I++) { a[I]=9*(I-2+r*(I>3))%5; printf(“-”,a[I]); } } A.-4 0 4 0 4 B.-4 0 4 0 3 C.-4 0 4 4 3 D.-4 0 4 4 0 23.下面是对s的初始化,其中不正确的是( ) A.char s[5]={“abc”}; B.char s[5]={?a?,?b?,?c?}; C. char s[5]=””; D. char s[5]=”abcdef”; 24.下面程序段的运行结果是( ) char c[5]={?a?,?b?,?\\0?,?c?,?\\0?}; printf(“%s”,c); A.’a”b’ B.ab C.ab□c D.abc 25.对两个数组a和b进行如下初始化 char a[ ]=”ABCDEF”; char a[ ]={?A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是( ) A.a和b数组完全相同 B.a与b长度相同. C.a和b中都存放字符串 D.a数组比b数组长度长 26.有两个字符数组a,b,则以下正确的输出语句是( ) A.gets(a,b); B.scanf(“%s,%s”,a,b); C.scanf(“%s%s”,&a,&b); D.gets(“a”),gets(“b”); 27.有字符数组a[80]和b[80],则正确的输出语句是( ) A.puts(a,b); B.printf(“%s,%s”,a[ ],b[ ]); C.putchar(a,b); D.puts(a),puts(b); 28.下面程序段的运行结果是( ) char a[7]=”abcdef”; char b[4]=”ABC”; strcpy(a,b); printf(“%c”,a[5]); A.□ B.\\0 C.e D.f 29.有下面的程序段,则( ) char a[3],b[ ]=”China”; a=b; printf(“%s”,a); A.运行后将输出China B. 运行后将输出Ch C. 运行后将输出Chi D.编译出错 30.下面程序段的运行结果是( ) char c[ ]=”\\t\\v\\\\\\0will\\n”; printf(“%d”,strlen(c)); A.14 B.3 C.9 D.字符串中非法字符,输出值不确定 31.判断字符串a和b是否相等,应当使用( ) A. if(a==b) B.if(a=b) C.if(strcmp(a,b)) D. .if(strcmp(a,b)) 32.判断字符串s1是否大于字符串s2,应当使用( ) A.if(s1>s2) B. .if(strcmp(s1,s2)) C. .if(strcmp(s2,s1)>0) D. .if(strcmp(s1,s2)>0) 33.下面程序段是输出两个字符串中对应相等的字符请填空 char x[ ]=”program”, char y[ ]=”Fortran”; int I=0; while(x[I]1=?\\0?&&y[I]!=?\\0?) if(x[I]==y[I]) printf(“%c”, ________); else I++; A.x[I++] B.y[++I] C.x[I] D.y[I] 34.下面描述正确的是( ) A. 两个字符串所包含的字符个数相同时才能比较字符串 B. 字符个数多的字符串比字符个数少字符串大 C. 字符串“STOP□”与“STOP”相等 D. 字符串“That”小于字符串“The” 35.下述对C语言字符数组的描述中错误的是( ) A. 字符数组可以存放字符串 B. 字符数组的字符串可以整体输入,输出 C. 右以在赋值语句中能过赋值运算符“=”对字符数整体赋值 D. 不可以用关系运算符对数组中的字符串进行比较 36.下面程序的运行结果是( ) #include { char ch[7]={“12ab56”}; int I,s=0; for(I=0;ch[I]>=?0?&&ch[I]<=?9?;I+=2) s=10*s+ch[I]-?0?; printf(“%d\\n”,s); } A. 1 B. 1256 C. 12ab56 D. 1 { char a[80]=”AB”,b[80]=”LMNP”; int I=0; strcat(a,b); while(a[I++]!=?\\0?) b[I]=a[I] puts(b); } A. LB B.ABLMNP C.AB D.LBLMNP 38.下面程序的运行结果是( ) #include { char a[ ]=”morning”,t; int I,j=0;