C语言复习题 (2)
1计算机科学与技术专业本科班C语言程序设计期末复习题2

1计算机科学与技术专业本科班C语言程序设计期末复习题2《C语言程序设计》一、单项选择题(每小题2分,共60分)1、在VC 6.0环境中用RUN命令运行一个C程序时,实际所运行的程序的后缀是:A).CPP B) .C C) .OBJ D).EXE2、结构化程序设计所规定的三种基本控制结构是A) 输入、处理、输出B) 树形、网形、环形C) 顺序、选择、循环D) 主程序、子程序、函数3、以下正确的整型常量是:A) 16. B) -26 C) 1,000 D) 3 5 74、已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是A) 字符A B)字符a C)字符e D)非法的常量5、以下有4组用户标识符,其中合法的一组是A) For B) 4d C) f2_G3 D) WORD-sub DO IF voidCase Size abc define6、以下非法的赋值语句是A) n=(i=2,++i); B)j++; C) ++(i+1); D)x=j>0;7、C语言中运算对象必须是整型的运算符是:A) % B) / C) ! D) **8、设 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的值位为A) 0 B) 1 C)2 D) 39、C语言中,字符(Char)型数据在微机内存中的存储形式是:A) 反码 B) 补码 C) EBCDIG 码 D) ASCII码10、以下叙述正确的是:A) C语言总是从第一个定义的函数开始执行B) 在C语言程序中,要调用的函数必须在main()函数中定义C) C语言程序总是从main()函数开始执行D) C语言程序中的main()函数必须放在程序的开始部分11、若已定义int型的三个量a、b、c,则以下正确的输入语句是:A) read(a,b,c); B) scanf("%d%d%d",a,b,c);C) scanf("%D%D%D",&a,%b,%c); D) scanf("%d%d%d",&a,&b,&c);12、以下叙述中正确的是A) C程序中注释部分可以出现在程序中任意合适的地方B) 花括号“{”和“}”只能作为函数体的定界符C) 构成C程序的基本单位是函数,所有函数名都可以由用户命名D) 分号是C语句之间的分隔符,不是语句的一部分13、以下数组定义中不正确的是A) int a[2][3];B) int b[][3]={0,1,2,3};C) int c[100][100]={0};D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};14、有以下程序fun(int x, int y, int z){ z=x*x+y*y; }main(){ int a=31;fun(5,2,a);printf(“%d”,a); }程序运行后的输出结果是A) 0 B) 29 C) 31 D) 无定值15、有以下程序main(){ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf(“%d”,*--p); }程序运行后的输出结果是A) 非法 B)a[4]的地址C)5 D)316、有以下程序#define M(x,y,z) x*y+zmain(){ int a=1,b=2, c=3;print f(“%d\n”, M(a+b,b+c, c+a)); } 程序运行后的输出结果是A) 19 B) 17 C) 15 D) 1217、有以下程序main(){ int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);< p="">printf("%d,%d\n",k,m); }程序运行后的输出结果是A) 0,0 B) 0,1 C) 1,0 D) 1,118、有以下程序main(){ int a=3,b=4,c=5,d=2;if(a>b)if(b>c)printf("%d",d++ +1);elseprintf("%d",++d +1);printf("%d\n",d); }程序运行后的输出结果是A) 2 B) 3 C) 43D) 44 19、与数学式子123 x nx 对应的C 语言表达式是A) 3*x^n(2*x-1) B) 3*x**n(2*x-1)C) 3*pow(x,n)*(1/(2*x-1)) D) 3*pow(n,x)/(2*x-1)20、若变量c 为char 类型,能正确判断出c 为小写字母的表达式是A) ‘a’<=c<= ‘z’ B) (c>= ‘a’)||(c<= ‘z’)C) (‘a’<=c)and (‘z’>=c) D) (c>= ‘a’)&&(c<= ‘z’)21、有以下程序main(){ char a[ ]={‘a’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘\0’};int i,j;i=sizeof(a); j=strlen(a);printf(“%d,%d \b”i,j); }程序运行后的输出结果是A )9,9B )8,9C )1,8D )9,822、有以下程序#includemain(){ char *p=“abcde\Ofghjik\0”;printf(“%d \n”,strlen(p)); }程序运行后的输出结果是A) 12 B) 15 C) 6 D) 523、以下叙述中不正确的是A )C语言中的文本文件以ASC Ⅱ码形式存储数据B )C语言中对二进制文件的访问速度比文本文件快C )C语言中,随机读写方式不适用于文本文件D )C语言中,顺序读写方式不适用于二进制文件24、设有如下定义:struck sk{ int a;float b;}data;int *p;若要使P 指向data 中的a 域,正确的赋值语句是A) p=&a B) p=data.a; C) p=&data.a D) *p=data.a;25、有以下程序main(){ char *s[]={"one","two","three"},*p;p=s[1];printf("%c,%s\n",*(p+1),s[0]); }执行后输出结果是A) n,two B) t,one C)w,one D) o,two26、以下选项中,与k=n++完全等价的表达式是A) k=n,n=n+1 B) n=n+1,k=n C) k=++n D) k+=n+127、有如下程序main(){ int i,sum;for(i=1;i<=3;sum++) sum+=i;printf(“%d\n”,sum); }该程序的执行结果是A) 6 B) 3 C) 死循环 D) 028、有以下程序main(){ int i;for(i=0;i<3;i++)switch(i){ case 1: printf("%d",i);case 2: printf("%d",i);default: printf("%d",i);}}执行后输出结果是A) 011122 B) 012 C) 012020 D) 12029、有如下程序main(){ int x=23;do{ printf(“%d”,x--);}while(!x); }执行后输出结果是A) 321 B) 23 C) 不输出任何内容 D) 陷入死循环30、若有定义:int x,*px; 则正确的赋值表达式是:A) px=&x B) px=x C) *px=&x D) *px=*x二、填空题(每小题2分,共20分1、以下程序段的输出结果是 _______ 。
C语言程序设计复习题 (2)

C\C++程序设计复习题一、选择题1、一个C语言程序总是从( C )开始执行A) 书写顺序的第一个函数B) 书写顺序的第一条执行语句C) 主函数main()D) 不确定2、以下能正确定义二维数组的是( C )A.int a[][3];B.int a[][3]=2{2*3};C.int a[][3]={};D.int a[2][3]={{1},{2},{3,4}};3、设int x=3,y=4,z=5,则下列表达式中的值为0的是( D )A) …x‟&&‟y‟B) x||y+z&&y-z C) x<=y D) !((x<y)&&!z||1)4、执行以下程序段后,i的值是( C )int i=10;switch(i+1){ case 10: i++; break;case 11: ++i;case 12: ++i; break;default : i=i+1;}A) 11 B) 13 C) 12 D) 145、语句while(!e);中的条件!e等价于( B )A) e==0 B)e!=1 C) e!=0 D) 运行时出错6、下列数据中,为字符串常量的是(B )。
(A)…A‟(B)“house”(C)How do you do.(D)‟$abc‟7、用int a[4]={1,2}; 对数组进行初始化后,数组元素a[3]的值是( B )A) 随机值B) 0 C) 1 D) F8、在执行char str[10]=“china\0”;strlen(str)的结果是( B )A)5 B) 6 D) 7 D 99、若有定义,char *p=”computer”; 则语句printf(“%c”,*(p+2))运行结果是( B )A) 随机值B) m C)o D) omputer10、有以下程序( D )main(){ int i=0,x=0;for (;;){if(i==3||i==5) continue;if (i==6) break;i++;s+=i;};printf("%d\n",s);}程序运行后的输出结果是A.10B.13C.21D.程序进入死循环11、以下定义语句中正确的是( C )A.char a='A'b='B';B.float a=b=10.0;C.int a=10,*b=&a;D.float *a,b=&a;12、设有int x=11;则表达式(x++*l/3)的值为( B )。
C语言复习题 (2)

有以下程序#include <stdio.h>void main(){ int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是__C___。
A、0,0B、0,1C、1,0D、1,1 若变量c为char类型,能正确判断出c为小写字母的表达式是__D_____。
A. 'a'<=c<='z'B. (c>='a')||(c<='z')C. ('a'<=c)and('z'>=c)D. (c>='a')&&(c<='z')以下符合C语言语法的实型常量是__C____。
A、1.2E0.5B、3.14159EC、5E-3D、E15 若变量已正确定义,有以下程序段i=0;doprintf("%d, ",i);while(i++);printf("%d\n",i);其输出结果是____B__。
A. 0,0B. 0,1C. 1,1D. 程序进入无限循环若有以下程序段,int c1=1 ,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是____A__。
A、0B、0.5C、1D、2 以下选项中合法的字符常量是__B____。
A、"B"B、'\010'C、68D、D 有以下程序main(){ char a,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66↙。
《C语言程序设计》复习题(2)-填空题

{ unsigned short x=65536; int y;
printf(“%d\n”, y=x);
} 50. 若有 int x=11; 则表达式 1/3*x++的值为 0 。
51. 执行语句 printf(“%d” , (a=2)&&(b=-2) ); 后的 输出是 1 。
52. 执行下列程序段后, 变量 i 的值是 16 。 int i=10 ; switch (i) { case 9: i+=0; case 10: i+=1; case 11: i+=2; default: i+=3; }
值为 -2 。 27. C语言中 标号 标识符无值、无类型且不需要声
明便可直接使用。 28. 若已声明: int x=1 , z=1 , y=1 , k ;则执行表达式
k=x++||++y&&++z后,变量k,x,y,z的值是 1,2,1,1 。
最小数是: 1000000000000000
29. 若用八进制常量表示C中的int型常1量0 (0160bits0)0
float x=25.0;
fwrite(&x,sizeof(float),1,fp);
48. 若有定义: int b=17; float a=4.5, c=6.5;
则表达式 a+(int)(b/3*(int)(a+c)/2)%4的值为 49. 下列程序执行后的输出结果是 0 。
7.5 。
main( )
是 for 。
35. 若一个函数不需要形式参数 , 则在定义函数时, 应使形式参数表为空或放置一个 void 。
C语言复习题

《C语言》复习题一、选择题(1) 有如下程序main(){ int y=3,x=3,z=1;printf(“%d %d\n”,(++x,y++),z+2);}运行该程序的输出结果是: DA) 3 4 B) 4 2 C) 4 3 D) 3 3(第三章输出语句)(2)当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是: CA)c=b=a;B)(a=c)‖(b=c);C)(a=c)&&(b=c);D)a=c=b;(第四章关系表达式)(3)在以下一组运算符中,优先级最高的运算符是: CA)<= B)=C)% D)&&(第四章运算符的优先级)(4) 请选出合法的C语言赋值语句: BA) a=b=58 B) i++;C) a=58,b=58 D) k=int(a+b)(第三章赋值语句)(5)以下说法中正确的是: CA)#define和printf都是C语句B)#define是C语句,而printf不是C)printf是C语句,但#define不是D)#define和printf都不是C语句(第三章语句概述)(6)若有以下定义: Dchar a; int b;float c; double d;则表达式a*b+d-c值的类型为A) float B) int C) char D) double(第二章类型混合运算)(7)若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是: CA)1 B)2C)2.0 D)2.5(第二章类型混合运算)(8)有以下程序#includemain(){ int a,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}输出结果是: AA) 2,1 B) 3,2 C) 4,3 D) 2,-1(第四章逻辑运算符)(9) 以下程序运行后,输出结果是: CA) cde B) 字符c的ASCII码值C) 字符c的地址D) 出错main(){ char *s="abcde";s+=2;printf("%ld\n",s);}(第九章指针的概念)(10)若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为:DA)a<>0 B)!aC)a=0 D)a(第4章条件表达式)(11)有如下程序段,其输出结果是什么: Amain( ){int a=1,b=3,c=5;if (c=a+b)printf ("yes\n");else printf("no\n"); }A) yes B) no C) yes\n D) no\n(第4章条件语句)(12) 假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表1示代数式----- 的表达式是: DabcA) 1/a*b*cB) 1/(a*b*c)C) 1/a/b/(float)cD) 1.0/a/b/c(第二章类型混合运算)(13)若i ,j已定义为int类型,则以下程序段中内循环体的总的执行次数是: Afor (i=5;i;i--)for(j=0;j<4;j++){...}A)20 B)15C)24 D)16(第五章for循环语句)(14)下面哪个程序段不是死循环: C(A) a=0; sum=0;while(a=1){sum=sum+a;a++;}(B) {int I,sum=0;For(i=1;i<=3;sum++)sum+=I;}(C) sum=0;for(i=1;i<10;i++);sum=sum+i;(D) sum=0;for(i=1; ;i++)sum=sum+i;(第五章for循环语句)15、设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0]则下列能够正确表示数组元素a[1][2]的表达式是: DA)*((*prt+1)[2]) B)*(*(p+5))C)(*prt+1)+2 D)*(*(a+1)+2)16、不能把字符串:Hello!赋给数组b的语句是: BA)char b[10]={'H','e','l','l','o','!'};B)char b[10];b="Hello!";C)char b[10];strcpy(b,"Hello!");D)char b[10]="Hello!";17、设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0]则下列能够正确表示数组元素a[1][2]的表达式是: DA)*((*prt+1)[2]) B)*(*(p+5))C)(*prt+1)+2 D)*(*(a+1)+2)18、请选出以下语句的输出结果: Aprintf("%d\n",strlen("\t\"\065\xff\n"));A) 5 B) 14 C) 8 D) 输出项不合法,无正常输出(19)假定所有变量均已正确说明,下列程序段运行后x的值是: Ba=b=c=0;x=35;if(!a)x--;else if(b);if(c)x=3;else x=4;A)34 B)4 C)35 D)3(第四章if语句)(20) 运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为: CA) 2,0 B) 5,0 C) 5,5 D) 2,5#include<stdio,h>main(){ int v1=0,v2=0;char ch;while((ch=getchar())!='#')switch(ch){ case 'a';case 'h';default; v1++;case '0'; v2++;}printf("%d,%d\n",v1,v2);}(第四章switch语句)(21) 执行以下程序段时: AA) 循环体将执行一次B) 循环体将执行两次C) 循环体将执行无限次D) 系统将提示有语法错误x=-1;do {x=x*x; } while(! x);(第五章do_whule语句)(22)执行下面的程序后,a的值为: Bmain(){ int a,b;for (a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}A)7 B)8C)9 D)10(第5章break,continue 语句)23) 下面能正确进行字符串赋值操作的语句是: CA) char s[5]={"ABCDE"}; B) char s[5]={'A','B','C','D','E'};C) char *s;s="ABCDEF"; D) char *s; scanf("%s",s);(第6章字符数组的定义;第9章字符串指针)(24)不能把字符串:Hello!赋给数组b的语句是: BA)char b[10]={'H','e','l','l','o','!'};B)char b[10];b="Hello!";C)char b[10];strcpy(b,"Hello!");D)char b[10]="Hello!";(第6章字符数组的使用)(25)函数调用:strcat(strcpy(str1,str2),str3)的功能是: CA)将串str1复制到串str2中后再连接到串str3之后B)将串str1连接到串str2之后再复制到串str3之后C)将串str2复制到串str1中后再将串str3连接到串str1之后D)将串str2连接到串str1之后再将串str1复制到串str3中(第6章字符串处理函数)(26)给出以下定义:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为: CA) 数组X和数组Y等价B) 数组x和数组Y的长度相同C) 数组X的长度大于数组Y的长度D) 数组X的长度小于数组Y的长度(第6章字符数组的定义)(27)以下程序的输出结果是: DA)AfghdEFG B)Abfhd C)Afghd D)Afgd#includemain( ){ char *p1,*p2,str[50]="ABCDEFG";p1="abcd";p2="efgh";strcpy(str+1,p2+1);strcpy(str+3,p1+3);printf("%s",str);}(第6章字符串处理函数;第9章字符串指针)(28)下面哪个程序段编译会出错: DA) max(int x,int y,int *z) B) max(int x, int y){ *z=x>y?x:y;} {return x>y?x:y;}C) max(int x,int y) D) int max(int x, y){ int z; { int zz=x>y?x:y; z=x>y?x:y;return z;} return z;}(29)下列程序执行后输出的结果是: D#include 〈stdio.h〉f(int a){ int b=0;static c=3:a=c+ +,b+ +;returu(a);}main( ){ int a=2,i,k;for(i=0;i<2;i+ +)k=f(a+ +);printf("%d\n",k);}A)3 B)0 C)5 D)4(第7章静态变量)(30)下列程序执行后输出的结果是: Aint d=1;fun (int q){ int d=5;d + =q+ +;printf("%d".d);}main( ){ int a=3;fun(a);d + = a + +;printf("%d\n",d);}A)8 4 B)9 6 C)9 4 D)8 5(第7章函数调用;第3章复合赋值运算符)(31)以下程序的输出结果是: Dmain(){ int x=10,y=10;printf("%d %d\n",x--,--y);}A)10 10 B)9 9C)9 10 D)10 9(第7章函数调用时,参数结合方式:右结合)(32)有以下程序int fun(int x , int y , int *cp , int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是: CA)50,30 B)30,50 C)80,-20 D)80,20(第7章函数调用;第9章指针变量做参数)(33)执行下面的程序后,a的值是: B#define SQR(X) X*Xmain( ){ int a=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A)10 B)1 C)9 D)0(第8章带参宏定义)(34) 以下有关宏替换的叙述不正确的是: DA) 宏替换不占用运行时间 B)宏名无类型C)宏替换只是字符替换 D)宏名必须用大写字母表示(第8章宏定义)(35)C语言的编译系统对宏命令的处理是: DA) 在程序运行时进行的B) 在程序连接时进行的C) 和C程序中的其它语句同时进行编译的D) 在对源程序中其它成份正式编译之前进行的(第8章宏定义运行特点)(36)若有宏定义如下:#define X 5#define Y X+1#define Z Y * X / 2则执行以下printf语句后,输出结果是: Dint a; a=Y;Printf("%d\n", Z);Printf("%d\n", - - a);A) 7 B) 12 C) 12 D) 76 6 5 5(第7章函数调用;第8章带参宏定义)37、若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是: DA) &t[3][2]B) t[3][2] C) t[1][0] D) t[2]+138、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是: CA)1 B)2C)2.0 D)2.539、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是: CA)c=b=a;B)(a=c)‖(b=c);C)(a=c)&&(b=c);D)a=c=b;40、C语言的编译系统对宏命令的处理是: DA) 在程序运行时进行的B) 在程序连接时进行的C) 和C程序中的其它语句同时进行编译的D) 在对源程序中其它成份正式编译之前进行的(41)请读程序:#define ADD(x) x+xmain(){int m=1, n=2, k=3;int sum=ADD(m+n) * k;printf("sum=%d", sum);}上面程序的运行结果是: BA) sum=9 B) sum=10 C) sum=12 D) sum=18(第8章带参宏定义)(42)在宏定义 #define PI 3.14159中,用宏名PI代替一个: DA) 常量 B)单精度数 C)双精度数 D)字符串(第8章宏定义)(43)设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0]则下列能够正确表示数组元素a[1][2]的表达式是: DA)*((*prt+1)[2]) B)*(*(p+5))C)(*prt+1)+2 D)*(*(a+1)+2)(第9章数组指针与指向主组的指针)44、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假“的表达式是___C____。
c语言复习题

A. 6 B. 7 C. 11 D. 12
(10) 合法的数组定义是( )。 A
A. char a[ ]= "string " ; B. int a[5] ={0,1,2,3,4,5}; C. char a= "string " ; D. char a[ ]={0,1,2,3,4,5}
A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n];
(4) 对字符数组进行初始化,( )形式是错误。 B
A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[ ]={ '1', '2', '3', '\0'}; D. char c4[ ]="123";
2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。
3、设 c='w',a=1,b=2,d=-5, 则表达式 'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==a=2的值分别为 1 、 0 、 1 、 1 。
(8) 设有定义:char s[12] = "string" ; 则printf( "%d\n",strlen(s)); 的输出是( )。 A
A. 6 B. 7 C. 11 D. 12
(9) 设有定义:char s[12] = "string"; 则printf("%d\n ", sizeof(s)); 的输出是( )。 D
大连理工大学c语言题库2

1. C语言中运算对象必须是整型的运算符是()。
A、=B、%=C、〈=D、/2.下列字符序列中,不可用作C语言标识符的是()。
A、b70B、a_1C、#abD、symbol3.下列程序的输出结果是()。
main(){int a=011;printf("%d\n",++a);}A、11B、9C、12D、104.逻辑表达式5>3&&2||8<4-!0的值为:( )A、3B、2C、1D、05.下列选项中,合法的C语言关键字是()。
A、integerB、defaultC、VARD、cher6.下列程序的输出为()。
main(){ int y=10;while(y--);printf("y=%d\n",y);}A、y=-1B、y=0C、y=1D、while构成无限循环7.以下表述中正确的是( ).A、在do-while循环中,while表达式的值不能为"假"B、do-while循环中,while语句不能省略C、do-while循环中,while(表达式)后面不能加分号D、除了for循环,其他循环中都不能使用复合语句8.以下不能正确定义二维数组的选项是()。
A、int a[2][]={{1,2},{3,4}};B、int a[2][2]={{1},2,3};C、int a[2][2]={{1},{2}};D、int a[][2]={1,2,3,4};9. int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是()。
A、for(i=1;i<11;i++)a[i]=i;B、for(i=1;i<11;i++)a[0]=1;C、for(i=1;i<11;i++)a[i+1]=i;D、for(i=1;i<11;i++)a[i-1]=i;10.若有说明: int a[3][4]={0};则下面正确的叙述是()。
c语言复习题(1~6章) (2)

注意:超纲题不需要做!1、C语言提供合法的数据类型关键字是( )A)Double B)short C)integer D)Char2、对于下列各字符串,请选取择正确的标识符( )。
A)Boo B)for C)5abc D)I like C3、下列不属于字符型常量的是()A)‘A’B)“B”C)‘\n’ D)‘D’4、下面四个选项中,均是正确的八进制数或十六进制数的选项是。
A)-10 0x8f -011 B) 010 -0x11 0xf1C) 0abc -017 0xc D) 0a12 -0x123 -0xa5、若有定义:int a = 7; float x = 2.5 , y = 4.7 ;则表达式x + a % 3 * (int) (x + y) % 2/4 的值是A) 2.750000 B) 0.00000 C) 3.5000006、已知ch是字符型变量,下面不正确的赋值语句是。
A)ch = 5 + 9; B) ch= ' a + b '; C) ch = ' \ 0 '; D) ch= '7' + '6';7、错误的转义字符是 ( )A)'\091' B)'\\' C)'\0' D)'\''8、设int a,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是 ( )A)2,1,2 B)2,0,3 C)2,2,3 D)2,1,39、在C语言中,错误的常数是 ( )A)1E+0.0 B)5. C)0xaf D)0L10、下列正确的标识符是:A)12ab B)float C)aw~1e D)b6ty11、对y在[3,23]和[100,200]范围内为真的确表达式为:A)(y>=3)&&(y<=23)&&(y>=100)&&(y<=200)B)(y>=3)||(y<=23)||(y>=100)||(y<=200)C)(y>=3)&&(y<=23)||(y>=100)&&(y<=200)D)(y>=3)||(y<=23)&&(y>=100)||(y<=200)12、在一个C程序中A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置13、8以下能正确地定义整型变量a,b和c并为其赋初值5的语句是A)int a=b=c=5;B)int a,b,c=5;C)int a=5,b=5,c=5;D)a=c=b=5;14、C语言中,long类型的数据占字节数为()A) 1 B) 2 C) 4D) 815、下列为合法的用户标识符为()A) _98B) P#d C) a* D) void16、如果x为float类型变量,则以下语句输出为()x=213.82631;printf(“%4.2\n”,x);A) 宽度不够,不能输出B) 213.82 C) 213.82631 D) 213.8317、在C语言中,合法的字符常量是( )A)'\084' B)'\x43' C)'ab' D)"\0"18、不能正确表示ab除以cd的C语言表达式是()A) a*b/c*d B) a/(c*d)*b C)a*b/c/d D) a*b/(c*d)19、以下不符合C语言语法的赋值语句是(D)A) i++; B) i=i=5; C) k=(2*4,k*4); D) y=float(i);20、若有以下定义:char a; int b;float c; double d;则表达式a*b+d-c值的类型为(D)A) float B) int C) char D) double21、下列程序的输出结果是#include<stdio.h>main(){float x,y;scanf("%f",&x);if(x<0.0)y=0.0;else if((x<5.0)&&(x!=2))y=1.0/(x+2.0);else if(x<10.0)y=1.0/x;else y=10.0;printf("%f\n",y) ; }输入:2.0A)0.000000 B)0.250000 C)0.5000000 D)1.00000022、下列程序的输出结果是main(){int m=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--) ; }A)7 B)6 C)5D)423、下列程序的输出结果是main(){int a=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d %d\n",a,b);elseprintf("%d %d\n",b,a); }A)-1 1 B)0 1 C)1 0D)0 024、下列程序的输出结果是main(){int x=100,a=10,b=20,ok1=5,ok2=0;if(a<b)if(b!=15)if(!ok1)x=1;elseif(ok2)x=10;elsex=-1;print("%d\n",x);}A)-1B)0 C)10 D)225、下列程序的输出结果是main(){int a,b,c,x;a=b=c=0;x=35;if(!a) x--;else if(b);if(c)x=3;elsex=4;print("%d\n",x) ; }A)34 B)4C)35 D)326、下列程序的输出结果是2 main(){int a=2,b=-1,c=2;if (a<b)if(b<0)c=0;elsec+=1;printf("%d\n",c) ; }27、下列程序的输出结果是103 main(){int a=-1,b=4,k;k=(a++<0)&&(!(b--<=0));printf("%d%d%d\n",k,a,b) ; } 28、下列程序的输出结果是004 main(){int a=-1,b=4,k;k=(++a<0)&&(!(b--<=0));printf("%d%d%d\n",k,a,b) ; } 29、下列程序的输出结果是#include<stdio.h>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\n",a,b) ; }A)a=2,b=1B)a=1,b=1C)a=1,b=0 D)a=2,b=230、当a的值分别为:1,2,3时,程序的结果是main(){int a;printf("Please enter a=");scanf("%d",&a);switch(a){case 1:printf("*");break;default:print("#");case 2:printf("-") ; } }1:*2:-3:#-31、下列程序运行结果#include<stdio.h>main(){int x=23;doprintf("%2d",x--);while(!x) ; }A)321 B)23C)无D)死循环32、下列程序运行结果#include<stdio.h>main(){int i=0,sum=1;dosum+=i++;while(i<6);printf("%d\n",sum) ; }A)15 B)16C)17 D)1833、下列程序运行结果#include<stdio.h>main(){int xfor (x=3;x<6;x++)printf((x%2)?("**%d"):("##%d\n"),x) ; }A)**3##4B)##3 C)##3**4 D)**3##4**5 **4##5 **5 ##534、下列程序的输出结果是main(){float x,y,z;scanf(%f%f",&x,&y);z=x/y;while(1){if (fabs(z)>1.0){x=y;y=z;z=x/y;}elsebreak; }printf("%f\n",y) ; }输入3.6 2.4回车,则结果为A)1.500000 B)1.600000 C)2.000000 D)2.40000035、下列程序的输出结果是main(){int i=0,a=0;while(i<20){for(;;)if (i%10==0) break; else i--;i+=11;a+=i ; }printf("%d\n",a) ; }A)21 B)32C)33 D)1136、下列程序的输出结果是main(){int u=24,v=16,w;while(v){w=u % v; u=v ; v=w;}printf("%d\n",u); }A)7 B)8C)9 D)1037、假定a和b为int型变量,则执行以下语句后b的值为a=1; b=10;do{ b-=a;a++;}while (b--<0);A) 9 B) -2 C) -1 D) 838、以下程序的输出结果是(超纲)main(){ int i,k,a[10],p[3]:K=5;for (i=0;i<10;i++) a[i]=i;for (i=0;i<3;i++) p[i]=a[i*(i+1)];for (i=0;i<3;i++) k+=p[i]*2;printf("%d\n",k);}A) 20 B) 21 C) 22 D)2339、有以下程序(程序错误)main(){ int i, j;for(j=10;j<11;j++){ for(i=9;i=j-1)printf("%d",j);}}输出结果是A) 11 B) 10 C) 9 D) 10 11。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言复习题一、选择题:1.以下不是C语言的特点的是( B )A.C语言简洁、紧凑 B.能够编制出功能复杂的程序C. C语言可以直接对硬件进行操作 D.C语言移植性好2. 以下不正确的C语言标识符是( D )。
A.ABC B.abc C.a_bc D.ab.c3.一个c程序的执行是从( A ).A.main( )函数开始,直到main( )函数结束B.第一个函数开始,直到最后一个函数结束C.第一个语句开始,直到最后一个语句结束D.main( )函数开始,直到最后一个函数结束4.以下不正确的语句(设有int p,q)是( D )。
A.P*=3; B.p/=q; C.p十=3; D.p&&=q5.下列四组选项中,均不是C语言关键字的选项是( A ).A.define B.getc C.include D.whileif char sanf gotype printf case pow6.下面四个选项中,均是合法整形常量的选项是( A ).A.160B.-0xcdfC.-01D.-0x48a-0xffff 01a 986,012 2e5011 0xe 0668 0x7. 下面四个选项中,均是不合法浮点数的选项是( B ).A.160.B.123C.-.18D.-e30.12 2e4.2 123e4 0.234e3 .e5 0.0 1e38. 若有代数式3ae/bc,则不正确的C语言表达式是( C )A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*39. 若以下变量均是整形,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum 的值为(A ).A.7B.8C.9D.1010.若有定义:int a=7; float x=205 ,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是( A )。
A.2.500000B.2.750000C.3.500000D.0.00000011. s izeof(float)是( B )。
A.一个双精度型表达式B. 一个整型表达式C.一种函数调用D. 一个不合法的表达式12. 设int n=3;则n十十的结果是( B )。
A.2B.3C.4D.513. 设有说明: char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为( D )。
A.floatB.charC.intD.double.14. 若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( D ).A. scanf(“%d%d1x,%1e”,&x,&y,&z);B. scanf(“%2d*%d%1f”,&x,&y,&z);C. scanf(“%x%*d%o”,&x,&Y);D. scanf(“%x%o%6.2f”, &x,&y,&z);15. 以下说法正确的是( D ).A. 输入项可以为一个实型常量,如scanf(“%f”,3.5);B. 只有格式控制,没有输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);D. 当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);16. 以下程序的执行结果是( A )。
#include<stdio.h>main(){int sum,pad;sum=pad=5;pad=sum++;pad++;++pad;printf("%d\n",pad);}A.7B.6C.5D.417. 巳知字母A的ASCII码是65,以下程序的执行结果是( D )。
#include<stdio.h>main(){char c1='A',C2='Y';printf("%d,%d\n",c1,c2);A.A,YB.65,65C.65,90D.65,8918. 为了避免嵌套的if-else语句的二义性,c语言规定else总是与( C )组成配对关系。
A.缩排位置相同的ifB.在其之前末配对的ifC.在其之前未配对的最近的ifD.同一行上的if19. 逻辑运算符两侧运算对象的数据类型( D ).A.能是0或1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据20. 设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( D ).A.’x’&&’y’B.x<=yC. x||y+z&&y-zD.!((x<y)&&!z ||1)21. 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是( C ).A.A%2==1B.!(A%2==0)C.!(A%2)D.A%222. 以下不正确的if语句形式是( C ).A.if(x>y&&x!=y);B.if(x==y)x十=y;C.if(x ! =y)scanf(“%d”,&x) e1se scanf(”%d,&y);D.if(x<y){x十十;y十十;}23. 以下if语句语法正确的是( B ).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=x+y;printf(“%f“,x);}else printf(“%f”,-x)D.if(x>0){x=x+y;printf(“%f“,x);}else printf(“%f”,-x)else printf(“%f”,-x);24. 阅读以下程序main(){int a=5,b=0,c=0;if(a=b+c) printf(“***\n”);else printf(“$$$\n”);}以上程序 ( D ).A.语法有错不能通过编译B.可以通过编译但不能通过连接C.输出***D.输出$$$25. 以下程序运行结果是( C).main(){int a=100,x=10,y=20,ok1=5,ok2=0;if (x<y)if (y!=10)If(!ok1)a=1;elseif(ok2) a=10;a=-1;printf(“%d\n”,a);}A.1B.0 c.-1 D.不确定26. 执行以下程序段后,变量a,b,c得值分别是( B ).int x=10,y=9;int a,b,c;a=(--x==y++)? –x: ++y;b=x++;c=y;A.a=9,b=9,c=9B.a=8,b=8,c=10C.a=9,b=10,c=9D.a=1,b=11,c=1027. 若w,x,y,z,m均为int型变量,则执行下面语句后的m值是( A ).w=1; x=2; y=3; z=4;m=(w<x)? w:x;m=(m<y)? m:y;m=(m<z)? m:z;A.1B.2C.3D.428. 语句while(!e);中的条件!e等价于( A )。
A.e==0B.e!=1C.e!=0D.~e29. 下面有关for循环的正确描述是( D )A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判定表达式C.在for循环中,不能用break语句跳出循环体D.for循环体语句中,可以包含多条语句,但要用花括号括起来30. C语言中while和do-while循环的主要区别是( A ).A.do-while的循环体至少无条件执行一次B.while的循环控制条件比的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句31.以下程序段( C ).x=-1; do{x=x*x;} while(! x);A.是死循环B.循环执行二次C. 循环执行二次D.有语法错误32. 下面程序的运行结果是( B ).#include <stdio.h>main(){int y=10;do{y--;}while(--y);printf(“%d\n”,y--);}A.-1B.1C.8D.033. 以下正确的描述是( B ).A.continue语句的作用是结束整个循环的执行B.只能在循环体内和switch语句体内使用break语句C.在循环体内使用break语句或continue语句的作用相同D.从多层循环嵌套中退出时,只能使用goto语句34. c语言中( D )。
A.不能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环D.do—while语句构成的循环,当while语句中的表达式值为零时结束循环35. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(C )A. 整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式36. 在C语言中,一位数组的定义方式为:类型说明符数组名( D )。
A. [常量表达]B. 整型表达式C. [整型常量]或[整型表达式]D. [整型常量]37. 以下不能对二维整形数组a进行正确初始化的语句是( C )。
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};38. 若有说明:int a[][4]={0,0};则下面正确的叙述是(D )。
A. 数组a中每个元素均可得到初值0B. 二维数组a的第一维大小为1C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D.只有元素a0][0]和a[0][1]可得到初值0,其余元素均得不到初值039. 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是(B )。
A.2B.3C.4D.无确定值40. 下面程序的运行结果是(B )。
char c[5]={‘a’,’b’,’\0’,’c’c,’\0’};printf(“%s”,c);}A.‘a’’b’B.abC.ab cD.ab41. 有两个字符数组a、b,则以下正确的输入语句是( B )。