C语言习题.docx
- 文档编号:2194407
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:29
- 大小:29.01KB
C语言习题.docx
《C语言习题.docx》由会员分享,可在线阅读,更多相关《C语言习题.docx(29页珍藏版)》请在冰点文库上搜索。
C语言习题
练习题2015-2016
(2)重修)
判断
1.C语言源程序文件通过了编译、连接之后,生成一个后缀为.BAK的文件。
( )
2.在C程序中,APH和aph代表不同的变量。
( )
3.C语言中数据类型只有整型、实型和字符型。
( )
4.inti=20;switch(i/10){case2:
printf("A");case1:
printf("B");}的输出结果为A。
()
5.Break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。
()
6.函数strlen("ASDFG\n")的值是7。
()
7.结构体类型只有一种。
()
8.构成数组的各个元素可以有不同的数据类型。
( )
9.C语言中字符串的结束符是'\0'。
( )
10.数组名代表数组的首地址。
( )
11.函数的递归调用不过是一个函数直接或间接地调用它自身。
()
12.通过return语句,函数可以带回一个或一个以上的返回值。
()
13.Char*p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。
()
14.若有定义:
char*p(chara[10]);则p是函数名。
()
15.用fopen("file","r+");打开的文件"file"可以进行修改。
()
C概述,数据类型,运算符,表达式,选择结构
1.以下叙述中正确的是()。
A.程序设计的任务就是编写程序代码并上机调试B.程序设计的任务就是确定所用数据结构
C.程序设计的任务就是确定所用算法D.以上三种说法都不完整
2.C语言源程序的基本单位是()。
A.过程B.函数C.子程序D.标识符
3.C语言规定,在一个源程序中main函数的位置()。
A.必须在最开始B.必须在最后C.必须在预处理命令的后面D.可以在其他函数之前或之后
4.以下叙述中正确的是()。
A.C语言系统以函数为单位编译源程序B.main函数必须放在程序开始
C.用户定义的函数可以被一个或多个函数调用任意多次D.在一个函数体内可以定义另外一个函数
5.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()
A.必须为字母B.必须为下划线C.必须为字母或下划线
D.可以是字母,数字和下划线中任一种字符
6.下面四个选项中,均是合法转义字符的选项是()
A.'\'''\\''\n'B.'\''\017''\"'C.'\018''\f''xab'D.'\\0''\101''xlf'
7.下面四个选项中,均是不合法的用户标识符的选项是()
A.AP_0doB.floatla0_AC.b-agotointD._123tempINT
8.已知有声明charc='1';intx=300;floatt=35000;doubled=3.1234567e10;,则以下表达式求值时除()外其结果都可能是不准确的。
A.x=t/cB.t=d/xC.t=d/le5fD.t=x+c
9.已知有声明"intn;floatx,y;",则执行语句"y=n=x=3.89;"后,y的值为()。
A.3B.3.0C.3.89D.4.0
10.已知有声明"inta=3,b=4,c=5;",以下表达式中值为0的是()。
A.a&&bB.a<=bC.a||b&&cD.!
(!
c||1)
11.有)
12.执行了以下程序段后,x、w的值为()。
intx=0,y=1,z=2,w;
if(x++)w=x;
elseif(x++&y>=1)w=y;
elseif(x++&&z>1)w=z;
A.0、1B.1、1C.2、1D.3、2
13.寺
14.已知有声明"longx,y;"且x中整数的十进制表示有n位数字(4 A.y=x/(10*(n-1))B.y=x%(10*(n-1))C.y=x%(long)pow(10,n-1)D.y=x%(10^(n-1)) 15.下列程序的输出结果是()。 main() {inta=7,b=5; printf("%d\n",b=b/a); } A.5B.1C.0D.不确定值 16.假设变量a,b均为整型,表达式(a=5,b=2,a>b? a++: b++,a+b)的值是()。 A.7B.8C.9D.2 17.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534;a=(int)125.521%4;a=5<<2; A.125,31,1B.125,1,20C.125,31,20D.125.534,2,20 18.若有以下程序段 intr=8; printf("%d\n",r>>1); 输出结果是()。 A.16B.8C.4D.2 19.若有声明: intk,a,b; unsignedlongy=5;Doublex=1.23; 则以下表达式中正确的是()。 A.x%(-5)B.x=y[6]C.k=(a=l,b=2,&a+&b)D.a+=a-=(b=2)*(a=3) 20.若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为() A.4B.16C.32D.52 21.已知a、b、c为int类型变量,若有输入语句: scanf("a=%db=%dc=%d",&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是() A.132<回车>B.a=1b=3c=2<回车>C.1<回车>3<回车>2<回车>D.a=1<回车>b=3<回车>c=2<回车> 22.已知ch是字符型变量,则不正确的赋值语句是() A.ch=5+9;B.ch='\0';C.ch='7'+'9';D.ch='a+b'; 23.判断char型变量c1是否为大写字母的正确表达式是() A.'A'<=c1<='Z'B.(c1>='A')&(c1<='Z')C.(c1>='A')&&(c1<='Z')D.('A'<=c1)AND('Z'>=c1) 24.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。 则以下不能满足要求的表达式是() A.num%2==1B.! (num%2==0)C.! (num%2)D.num%2 25.若有定义: intk=7;floata=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是() A.2.500000B.2.7500000C.3.500000D.0.000000 26.设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是() A.y=(y*100+0.5)/100.0B.x=y*100+0.5,y=x/100.0 C.y=y*100+0.5/100.0D.y=(y/100+0.5)*100.0 27.以下正确的if语句是() A.if(n>0)printf("%f",n)printf("%f",-n); B.if(n>0){n=n+m;printf("%f",n);}elseprintf("%f",-n); C.if(n>0){n=n+m;printf("%f",n);};elseprintf("%f",-n); D.if(n>0){n=n+m;printf("%f",n)};elseprintf("%f",-n); 28.以下程序运行的结果是() #include intmain() { intx1=3,x2=0,x3=0; if(x1=x2+x3)printf("****"); elseprintf("####"); } A.输出: ****B.输出: ####C.存在语法错误D.无输出结果 29.语句while(! y)中的表达式! y等价于() A.y==0B.y! =1C.y! =0D.y==1 30.若有定义语句: intx=10;,则表达式x-=x+x的值为()。 A.-20B.-10C.0D.10 31.以下程序段中,与语句: k=a>b? (b>c? 1: 0): 0;功能相同的是()。 A.if((a>b)&&(b>c))k=l;elsek=0;B.if((a>b)||(b>c))k=l;elsek=0; C.if(a<=b)k=0;elseif(b<=c)k=1;D.if(a>b)k=l;elseif(b>c)k=1;elsek=0; 32.已知某程序如下: floatp=1.5; #definep2.5 main() {printf("%f",p);} 则main函数中标识符p代表的操作数是()。 A.float型变量B.double型变量C.float型常量D.double型常量 33.逻辑"异或"运算可描述为"axorb",其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其他情况下均为假。 以下表达式中()可以正确表示逻辑"异或"运算。 A.a||bB.a&&bC.(a&&b)&&! (a||b)D.(a||b)&&! (a&&b) 34.以下选项中,()是C语言关键字。 A.printfB.includeC.funD.default 35.已知有声明"inta=3,b=4;",下列表达式中合法的是()。 A.a+b=7B.a=|b|C.a=b=0D.(a++)++ 36.以下选项中,不能用作c语言标识符的是()。 A.printB.FORC.&aD._00 37.已知int类型数据在内存中存储长度为2个字节,以下语句中能正确输出整数32768的是()。 A.printf("%d",32768);B.printf("%ld",32768); C.printf("%f",32768);D.printf("%c",32768); 38.已知有声明"inta=3,b=4,c=5;",以下表达式中值为0的是()。 A.a&&bB.a<=bC.a||b&&cD.! (! c||1) 39.有以下定义语句,编译时会出现编译错误的是()。 A.chara='a';B.chara='\n';C.chara='aa';D.chara='\x2d'; 40.已有预处理命令和声明如下: #defineN10 inta=2,c=1;doubleb=1.2; 下述程序段正确的是()。 A.switch(a){caseC.a--;break;Casec+1: a++;break;} B.switch(a){caseN>0: a=1;break;Case1: a=O;break;} C.switch(a){case2: b++;break;Case'0': b=3;} D.switch(b){case1.0: b++;break;Case1.2: b=1;break;} 41.阅读以下程序 #include main() {intcase;floatprintF; printf("请输入2个数: "); scanf("%d%f",&case,&printF); printf("%d%f\n",case,printF); } 该程序在编译时产生错误,其出错原因是()。 A.定义语句出错,case是关键字,不能用作用户自定义标识符 B.定义语句出错,printF不能用作用户自定义标识符 C.定义语句无错,scanf不能作为输入函数使用 D.定义语句无错,printf不能输出case的值 42.设intx=2,y=3,z=(++x<=y--)? ((--y==1)? y--: --y): y--;则x,y,z的值为()。 A.3,0,1B.2,0,0C.3,1,1D.2,2,1 43.一个用c语言编写的程序,()是必不可少的。 A.取名为main的函数定义B.#include 44.以下单目运算符均只需一个操作数,其中要求操作数的类型只能是指针型的是()。 A.&B.++C.! D.* 45.有以下程序 #include main() {charc1,c2;C1='A'+'8'-'4';C2='A'+'8'-'5'; printf("%c,%d\n",c1,c2); } 已知字母A的ASCII码为65,程序运行后的输出结果是()。 A.E,68B.D,69C.E,DD.输出无定值 46.以下选项中,能用作用户标识符的是()。 A.voidB.8_8C._0_D.unsigned 47.有以下程序 #include main() { inta=1,b=0; printf("%d,",b=a+b); printf("%d\n",a=2*b); } 程序运行后的输出结果是()。 A.0,0B.1,0C.3,2D.1,2 48.设有定义: inta=l,b=2,c=3;,以下语句中执行效果与其它三个不同的是()。 A.if(a>b)c=a,a=b,b=c;B.if(a>b){c=a,a=b,b=c;} C.if(a>b)c=a;a=b;b=c;D.if(a>b){c=a;a=b;b=c;} 49.有以下程序 #include main(){ intc=0,k; for(k=1;k<3;k++) switch(k) {Default: c+=k;Case2: c++;break;Case4: c+=2;break;} printf("%d\n",c); } 程序运行后的输出结果是()。 A.3B.5C.7D.9 50.已有声明语句"unsignedcharch;",与表达式"ch='B'"的值不相同的表达式是()。 (注释: 字符A的Ascii码以十进制表示为65) A.ch=0x42B.ch=0102C.ch='\102'D.ch=066 51.已知有声明"inta=3,b=4,c;",则执行语句"c=1/2*(a+b);"后,c的值为()。 A.0B.3C.3.5D.4 52.表达式: (int)((double)9/2)-(9)%2的值是()。 A.0B.3C.4D.5 53.r 54.已知有声明"inta=3,b=4,c=5;",以下表达式中值为0的是()。 A.a&&bB.a<=bC.a||b&&cD.! (! c||1) 55.若有语句doublex=17;inty;,当执行y=(int)(x/5)%2;之后y的值为_______。 1 56.若有定义语句: inta=5;,则表达式: a++的值是_____________。 5 57.以下程序运行后的输出结果是_____________。 10 #include main() {intx=20; printf("%d",0 printf("%d",0 } 58.若有定义: inty=7;floatx=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为________。 5.5 59.设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。 x或y中有一个小于z_________x 60.设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。 x、y和z中只有两个为负数________x<0&&y<0&&z>=0||y<0&&z<0&&x>=0||x<0&&z<0&&y>=0 61.设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。 y是奇数 _________________________y%2y%2==1 62.设x、y、z均为int型变量,且x=3,y=-4,z=5,请写出下面每个表达式对应的结果。 (x&&y)==(x||z)_______1 63.27.设x、y、z均为int型变量,且x=3,y=-4,z=5,请写出下面每个表达式对应的结果。 ! (x>y)+(y! =z)||(x+y)&&(y-z)______1 64.若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为________-60 65.若s是int型变量,且s=6,则下面表达式s%2+(s+1)%2的值为______1 66.已知有变量定义: intx=4;floaty=3.5;则执行x+=y+2之后,x的值为____9 C语言规定,可执行程序的开始执行点是____主函数main 67.有inta=3,b=4,c=5;则以下表达式! (a+b)+c-1&&b+c/2的值是___________1 68.若采用十进制数的表示形式,则077为______,0111为____,0x29为____,0xab为______。 63,73,41,171 69.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为_____,n的值为_____10,6 70.设有说明: inta=1,b=0;则执行以下语句后的输出结果是_______________**0****2** switch(a) {case1: switch(b) {case0: printf("**0**");break;Case1: printf("**1**");break; }Case2: printf("**2**");break; } 71.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是_____2 if(a if(c else if(a if(b elsex=3; elsex=6; elsex=7; 72.有以下程序 #include main() {chara[20]="Howareyou? ",b[20]; scanf("%s",b);printf("%s%s",a,b); } 程序运行时从键盘输入: Howareyou? <回车> 则输出结果为________________。 Howareyou? How 循环结构,数组,指针 73.以下对于break语句使用的正确描述是()。 A.可以出现在程序中的任何位置B.只能出现在循环或switch结构中 C.只能出现在switch结构中D.只能出现在循环结构中 74.已知有声明"chars[20]="Hello";",在程序运行过程中,若要想使数组s中的内容修改为"Good",则以下语句中能够实现此功能的是()。 A.s="Good";B.s[20]="Good";C.strcat(s,"Good");D.strcpy(s,"Good"); 75.有以下程序 #include main() {intm=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r; printf("%d,%d,%d,%d\n",m,n,*p,*q); } 程序运行后的输出结果是()。 A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,2 76.? 77.? ; 78.设有如下程序段,下面描述中正确的是()。 intk=10;while(k=0)k=k-1; A.循环执行一次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次 79.若有定义语句: inta[4][10],*p,*q[4];且0≤i<4,则错误的赋值是()。 A.p=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1] 80.有以下程序 #include #include main() {chara[10]="abcd"; printf("%d,%d\n",strlen(a),sizeof(a)); } 程序运行后的输出结果是()。 A.7,4B.4,10C.8,8D.10,10 81.设有程序段如下,则描述正确的是()intx=10;while(x=0)x=x-1; A.while循环执行10次B.循环是无限循环 C.循环体语句一次也不执行D.循环体语句只执行一次 82.设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是____ for(y=100;x! =y;++x,y++) printf("****\n"); A.循环体只执行一次B.是无限循环C.循环体一次都不执行D.for语句中存在语法错误 83.若有声明语句"inta=5,b=4,c=3,*p=&a;",则下列()表达式语句是正确的。 A.(*p)++=c;B.printf(a%4==0? "%3d\n": "%3d",*p); C.*(*p)++;D.a>20? return*p-20: return*p-1; 84.若有声明"inta[5],*b=a,(*c)[3],*d[3];",则在以下表达式中有语法错误的是()。 A.a[0]=0B.b[0]=0C.c[0]=0D.d[0]=0 85.以下跳转语句中,只有()可以选择不唯一的跳转目的地。 A.continue;B.break;C.goto标识符;D.return; 86.以下声明中正确的是()。 A.intn=2,a[n]={10};B.intn=10,*p[2]=&n; C.intn=10,a[2]={n};D.inta[2][2]={10},(*p)[2]=a+1; 87.已知有声明"inta[4][4]={{1,2,3,4},{5,6,7,8),{9,10,11,12},{13,14,15,16)};",若需
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题