C语言复习.docx
- 文档编号:23736447
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:34
- 大小:29.07KB
C语言复习.docx
《C语言复习.docx》由会员分享,可在线阅读,更多相关《C语言复习.docx(34页珍藏版)》请在冰豆网上搜索。
C语言复习
C语言复习
一、判断题:
1.’\x72’、’\n’、’\\’都是字符常量。
(y)。
2.若有说明intc[4][50];则gets(c[1]);是正确的C命令语句。
(y)
3.若有变量定义longdata=10000000;则使用命令printf(”%d”,data);实现变量值输出是错误的命令语句,无法通过编译。
(n)
4.若有变量定义inta=1;表达式a--?
++a:
--a的值为1。
(y)
5.若有变量定义doublex=-3.4;循环语句while(x){x=x>0;}是错误命令。
(n)
6.定义数组chars[]={“abc“},则数组s的元素个数为3。
(n)
7.int*p=&a,a=0;是正确的C变量定义语句。
(n)
8.C语言程序从main函数开始执行,所以main函数必须写在其他被调用的函数之前。
(n)
9.表达式7=3+4不正确。
(y)
10.字符数组charstr[]="abcd";有5个数组元素(y)
11.while1i,j;一定是错误的C语句。
(y)
12.for(;;)S中的语句S必执行无穷多次。
(n)
13.用字符型指针变量p作为函数voidfa(char*pa)的实际参数时,应采用以下的命令格式fa(*p);(n)
14.sub()和Sub()是不同的函数(y)
15.在C程序中,函数中所定义的局部变量与全局变量同名时,局部变量屏蔽全局变量。
(y)
16.全局外部变量定义命令必须写在函数之外。
(y)
17.指针变量算术运算只能可作+、—运算。
(y)
18.如有定义floata[10];可定义表达式a=a+1。
(n)
19.在逻辑表达式的计算中,必须所有的逻辑远算符都被执行后,才会结束表达式的计算(n)
20.数组名作为函数实际参数,传送的是地址(y)
21.若变量pointer是指针变量,命令pointer=0x2000;是正确的赋值命令.(n)
22.intc[2][]={{1,2},{3,4}};是正确的二维数组定义命令。
(n)
23.printf("%5.3f\n",123456.12345);输出为23456.123(n)。
24.变量定义char*(pa)[4];说明pa是用于数组处理的指针。
(n)
25.用命令scanf("%s",name);对字符数组进行输入操作,当键入“IamaStudent”时,数组的内容为“I”。
(y)
26.表达式‘B’+a’-‘A’的结果是’b’(y)
27.while(){;}表示无限循环(n)
28.switch(j){……..}语句中的变量j可以是浮点型变量(n)
29.全局变量的不加存储方式修饰符时,说明其存储类型为auto(n)
30.指针变量本身没有指针(n)
31.关键字“struct”用于定义数据类型(n)
二、单项选择题:
(1)若有定义数组命令“intb[][3]={{1,2,3},{4,5},{6,7}}”,则b数组第1维的长度是()
A)2B)3C)4D)无确定值
b[2][2]的值是()
A)0B)1C)7D)无确定值
(2)C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符。
A)必须为字母或下划线。
B)必须为下划线。
C)必须为字母D)可以是字母、数字和下划线中的任一种字符。
(3)下面四个选项中,均是正确的八进制数或十六进制数的选项是。
A)-100x8f-011B)010-0x110xf1
C)0abc-0170xcD)0a12-0x123-0xa
(4)以下选项中非法的表达式是()
A)0<6x<100B)i3=j3==0
C)(char)(65+3)D)x+y==x+z
(5)若有定义:
inta=7;floax=2.5,y=4.7;则表达式
x+a%3*(int)(x+y)%2/4的值是()。
A)2.750000B)0.00000C)3.500000D)2.500000
(6)已有定义:
inta=8,则以下表达式中b的值不等于2的是:
()
A)b=a/3B)b=10-(a++)C)b=a%2D)b=a>3?
2:
1
(7)已知ch是字符型变量,下面不正确的赋值语句是()。
A)ch=5+9;B)ch='a+b';C)ch='\0';D)ch='7'+'6';
(8)设x,y和int型变量,且x=3,y=4,z=5则下面表达式中使x值为0的是()。
A)!
((z C)(z-y)||(! (x-=3))D)y||z&&(x-=3) (9)设有程序段 intk=10; while(k=0)k=k-1; 以下描述正确的是()。 A)循环体语句一次也不执行。 B)循环是无限循环。 C)while循环语句执行十次。 D)循环体语句执行一次。 (10)设有定义“chars[12]={“abcdef”};”则命令“printf(“%d\n”,strlen(s));”的输出结果为() A)随机值B)7C)6D)12 (11)当a=1,b=3,c=5d=4时,则执行完下面一段程序后,x的值是()。 if(a if(c else if(a if(b elsex=3; elsex=6; elsex=7; A)1B)3C)2D)6 (12)下面程序的运行结果是。 #include"stdio.h" voidmain() {inta=1,b=10 do {b-=a;a++;} while(b--<0); printf("a=%d,b=%d\n),a,b); A)a=3,b=11B)a=4,b=9 C)a=1,b=-1D)a=2,b=8 (13)调用函数时,若实参是一个数组名,则向函数对应的形参传送的是() A)数组长度B)数组的首地址 C)数组第一个元素的值D)整个数组元素的值 (14)若有说明: inta[10];则对a数组元素的正确引用是()。 A)a[10]B)a[10-10]C)a(5)D)a[3.5] (15)根据定义和数据的输入方式,输入语句的正确形式为。 已有定义: floatf1,f2; 数据输入方式: 4.25,3.5 A)scanf("%f%f",&f1,&f2);B)scanf("%f,%f",&f1,&f2); C)scanf("%3.2f%2.1f",&f1,&f2);D)scanf("%2.1f%3.2f",&f1,&f2); (16)有以下程序 voidmain() {inta[2][3]={{1,2,3},{4,5,6}}; intm,(*p)[3]=a; m=(*(*p))*(*(*(p+1)+2)); printf("%d\n",m); } 执行后输出的结果是() A)3B)4C)1D)6 (17)以下if语句语法正确的是。 A)if(x>0)B)if(x>0)printf("%f",-x) {x=x+y;printf("%f",x);}elseprintf("%f",-x); elseprintf("%f",-x); C)if(x>0)D)if(x>0) {x=x+y;printf("%f",x);};{x=x+y;peintf("%f",x)} elseprintf("%f",-x);elseprintf("%f",-x); (18)下列程序的输出结果是() voidmain() {inti; for(i=’A’;i<’I’;i++,++i)printf(“%c”,i+32); printf(“\n”); } A)编译不通过,无输出B)acegC)acegiD)abcdefghi (19)下列程序的输出结果是() voidmain() {inta=2,*p=&a; printf("%d%d",(*p)++,*p;) A)23B)22C)2D)21 (20)逻辑运算符两侧运算对象的数据类型。 A)只能是0或1B)可以是整型、字符型或实型数据 C)只可以是整型或字符型数据D)只能是0或非0正数 (21)以下for循环的执行次数是。 for(x=0,y=0;(y=123)&&(x<4);x++); A)无限次。 B)4次。 C)0次。 D)3次。 (22)下面的程序段。 for(t=1;t<=100,t++) {scanf("%d",&x); if(x<0)continue; printf("%3d",t); } A)当x<0时整个循环结束B)当x>=0时什么也不输出 C)printf函数永远也不执行D)最多允许输出100个非负整数 (23)若有说明intm[5],*p;将键入数据保存于数组第一个元素m[0],以下正确的语句段是()。 A)p=m;B)p=&m; scanf("%d",*p);scanf("%d",p); C)p=&m[0];D)p=m; scanf("%d",*p)sacnf(“%d”,p); (24)下面程序的运行结果是。 a=1;b=2;c=2; while(a printf("%d,%d,%d",a,b,c); A)1,2,0B)2,1,0C)1,2,1D)2,1,1 (25)若有说明: inta[3][4];则对数组元素的非法引用是。 A)a[0][2*1]B)a[0][4]C)a[4-2][0]D)a[1][3] (26)对以下说明的正确理解是: inta[10]={6,7,8,9,10}; A)将5个初值依此赋给a[1]至a[5]B)将5个初值依此赋给a[0]至a[4] C)将5个初值依此赋给a[6]至a[10]D)因长度与初值个数不同,故语句错误 (27)若二维数组a有m列,则在a[i][j]前的元素个数为 A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1 (28)已定义以下函数 voidfun(char*p2,char*p1) {while((*p2=*p1)! ='\0') {p1++;p2++;}} 函数的功能是() A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2 C)对p1和p2两个指针所指字符串进行比较 D)检查p1和p2两个指针所指字符串中是否有'\0'。 (29)以下正确的函数声明语句形式是。 A)doublefun(intx,inty)B)doublefun(intx;inty) C)doublefun(int,int);D)doublefun(intx;inty); (30)有以下程序 voidmain() {inti=0,s=0; do{ if(! (i%3)){ i++;continue;} i++; s+=i; }while(i<7); printf("%d\n",s); } 执行后输出的结果是() a)10B)9C)8D)16 (31)有两个字符数组a,b,则以下正确的输入格式是。 A)scanf("%s%s",&a,&b)B)gets(a,b) C)scanf("%s",a);scanf("%s",b);D)gets("a");gets("b") (32)以下程序正确的运行结果是。 voidmain() {inta=2,i; for(i=0;i<3;i++)printf("%4d",f(a)); } f(inta) {intb=0;staticintc=3; b++;c++; return(a+b+c);} A)777B)71013C)789D)7911 (33)当运行以下程序时,从键盘输入: ab c def ( #include"stdio.h" #defineN6 voidmain() {charc[N]; inti=0; for(;i for(i=0;i } A)abcdefB)aC)bD)ab bcc cdd d e f (34)执行以下程序后,a,b的值为 voidmain() {inta,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(-*p1)/(*p2)+7; printf("a=%d\n",a); printf("b=%d\n",b);} A)-1B)0C)1D)4 57610 (35)以下程序中调用scanf函数给变量a输入数值的方法是错误的,因为。 voidmain() {int*p,*q,a,b; p=&a; printf("inputa: "); scanf("%d",*p); …} A)*p表示的是变量a的值,而不是变量a的地址。 B)*p表示的是指针变量p的地址。 C)*p表示的是指针变量p的值。 D)*p只能用来说明p是一个指针变量。 (36)以下正确的函数形式是 A)doublefun(intx,inty)B)fun(intx,y) {z=x+y;returnz;}{intz;returnz;} C)fun(x,y)D)doublefun(intx,inty) {intx,y;doublez;}{doublez;z=x+y;returnz;} (37)以下不正确的说法是。 A)在不同函数中可以使用相同名字的变量。 B)形式参数是局部变量。 C)在函数内的复合语句中定义的变量在本函数范围内有效。 D)在函数内定义的变量只在本函数范围内有效。 (38)已有定义intk=2;int*p1=&k,*p2=&k;下面不能正确执行的赋值语句是。 A)k=*p1+*p2;B)p1=p2; C)p2=k;D)k=(*p1)*(*p2); (39)设x、y、z和k都是int型变量,则执行表达式: x=(y=4,z=16,k=32)后,x的值为 A)4B)16C)32D)52 (40)若有说明int*p,m=5,n;以下正确的程序段是。 A)p=&n;B)p=&n; Scanf("%d",&p);Scanf("%d",*p); C)Scanf("%d",&n)D)p=&n; *p=n;*p=m; (41)若有定义: inta[3][4];则对a数组的第i行第j列(假设i,j已正确说明并赋 值)元素值的正确引用为。 A)*(*(a+i)+j)B)(a+j)[j] C)*(a+i+j)D)*(a+i)+j (42)若已定义charS[10];则在下面表达式中不表示S[1]的地址的是。 A)S+1B)&S[1]C)&S[0]+1D)S++ (43)设有如下的变量定义: inti=8,k,a,b; unsingedlongw=5 doublex=1.42,y=5.2 则以下符合C语言语法的表达式是 A)a+=a-=(b=4)*(a=3) B)x%(-3); C)a=a*3=2D)y=float(i) (44)以下叙述中正确的是 A)输入项可以是一个实型常量,如 scanf("%f,"3.5); B)只有格式控制,没有输入项,也能正确输入数据到内存,例如: scanf("a=%d,b=%d"); C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如: scanf("%4.2f",&f); D)当输入数据时,必须指明变量地址,例如: scanf("%f",&f); (45)在执行以下程序时,为了使输出结果为,t=4则给a和b输入的值应满足的条件是 A)a>b B)aa>b voidmain() { ints,t,a,b; scanf("%d,%d",&a,&b); s=1;t=1; if(a<0)s=s+1; if(a>b)t=s+1; elseif(a==b)t=5; elset=2*s; printf("t=%d\n",t); } (46)设x和y均为int型变量,则以下语句: x+=y;y=x-y;x-=y;的功能是 A)把x和y按从大到小排列 B)把x和y按从小到大排列 C)无确定结果 D)交换x和y中的值 (21)以下程序的输出结果是: voidmain() {inta=12,b=12; printf("%d%d\n",--a,++b);} A)1010 B)1212 C)1110 D)1113 (47)以下程序运行后,输出结果是: A)cdeB)字符c的ASCII码值 C)字符c的地址D)出错 voidmain() {char*s="abcde"; s+=2; printf("%ld\n",s); } (48)以下程序输出结果是 A)7B)6C)5D)4 main() {intm=5; if(m++>5)printf("%d\n",m); elseprintf("%d\n",m--); } (49)当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为 A)1B)2C)3D)6 if(a if(c x=1; else if(a if(b elsex=3; elsex=3; elsex=6; (50)在执行以下程序时,如果从键盘上输入: ABCdef<回车>,则输出为 A)ABCdefB)abcDEFC)abcD)DEF #include voidmain() {charch;while((ch=getchar())! ='\n'){ if(ch>='A'&&ch<='Z')ch=ch+32; elseif(ch>='a'&&ch<'z')ch=ch-32; printf("%c",ch);}printf("\n");} (51)下面能正确进行字符串赋值操作的语句是 A)chars[5]={"ABCDE"}; B)chars[5]={'A'、'B'、'C'、'D'、'E'}; C)char*s;s="ABCDEF"; D)char*s;scanf("%s",s); (52)当执行以下程序段时 x=-1; do{x=x*x;}while(! x); A)循环体将执行一次 B)循环体将执行两次 C)循环体将执行无限次 D)系统将提示有语法错误 (53)在下列选项中,没有构成死循环的程序段是 (A)inti=100(B)for(;;); while (1) {i=i%100+1;(C)intk=1000; if(i>100)break;do{++k; } }while(k>=1000); (D)ints=36 While(s);--s; (54)执行语句: for(i=1;i++<4;)后;变量i的值是 A)3B)4C)5D)不定 (55)以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为 A)8B)7C)6D)5 #include #include func(charstr[]) {intnum=0; while(*(str+num)! ='\0')num++; return(num); } voidmain() {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习