C语言习题集.docx
《C语言习题集.docx》由会员分享,可在线阅读,更多相关《C语言习题集.docx(31页珍藏版)》请在冰豆网上搜索。
![C语言习题集.docx](https://file1.bdocx.com/fileroot1/2023-1/29/c8ed4e4b-704f-4293-8f18-0b7c5fde953c/c8ed4e4b-704f-4293-8f18-0b7c5fde953c1.gif)
C语言习题集
C语言习题集
一、程序设计基本概念
1、以下叙述正确的是:
____。
A)C语言的源程序不必通过编译就可以直接运行。
B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令。
C)C语言源程序经编译形成的二进制代码可以直接运行。
D)C语言中的函数不可以单独进行编译。
2、一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是__。
A)有0个或多个输入。
B)有0个或多个输出。
C)有穷性。
D)可行性。
3、以下叙述中正确的是_____。
A)C语言比其它语言高级。
B)C语言可以不用编译就能被计算机识别执行。
C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式。
D)C语言出现的,具有其它语言的一切优点。
4、C语言中用于结构化程序设计的3种基本结构是____。
A)顺序结构、选择结构、循环结构
B)if、switch、break
C)for、while、do-while
D)if、for、continue
5、为解决某一特定问题而设计的指令序列称为____。
A)文档 B)语言 C)程序 D)系统
6、用高级程序设计语言编写的程序称为____。
A)目标程序 B)可执行程序 C)源程序 D)伪代码
7、能将高级语言编写的源程序转换成目标程序的是____。
A)编辑程序 B)编译程序 C)驱动程序 D)链接程序
8、下列叙述中,正确一条是____。
A)计算机语言中,只有机器语言属于低级语言。
B)高级语言源程序可以被计算机直接执行。
C)C语言属于高级语言。
D)机器语言是所用机器无关的。
二、C程序设计初步
1、以下4个用户定义标识符中,全部合法的一组是____。
A)_mainencludesin B)if–maxturbo C)txtREAL3COM D)intk_2_001
2、以下不能定义为用户标识符的是___。
A)scanf B)Void C)_3com D)int
3、以下符合C语言语法的实型常量是____。
A)1.2E0.5 B)3.14159E C).5E-3 D)E15
4、若以下选项中的变量已正确定义,则正确的赋值语句是___。
A)x1=26.8%3; B)1+2=x2; C)x3=0x12; D)x4=1+2=3;
5、设有定义:
floata=2,b=4,h=3;以下C语言表达式中与代数式
计算结果不相符的是____。
A)(a+b)*h/2 B)(1/2)*(a+b)*h C)(a+b)*h*1/2 D)h/2*(a+b)
6、下面叙述正确的是_____。
A)C程序中注释部分可以出现在程序中任何合适的地方。
B)花括号“{”和“}”只能作为函数体的定界符。
C)构成C程序的基本单位是函数,所有函数名都可以由用户命名。
D)分号是C语句之间的分隔符,不是语句的一部分。
7、下列选项中可以作为C语言中合法整数的是____。
A)10110B B)0386 C)0Xffa D)x2a2
8、下列选项中非法的表达式是_____。
A)0<=x<100 B)i=j==0 C)(char)(65+3) D)x+1=x+1
9、有以下程序:
main(){inta;charc=10;floatf=100.0;doublex;
a=f/=c*=(x=6.5);
printf(“%d%d%3.1f%3.1f\n”,a,c,f,x);}
程序运行后的输出结果是___。
A)16516.5B)1651.56.5 C)1651.06.5 D)2651.56.5
10、设有以下定义:
inta=0;doubleb=1.25;charc=’A’;
#defined2
则下面语句中,错误是____。
A)a++; B)b++; C)c++; D)d++;
11、设有如下程序段:
intx=2002,y=2003;
printf(“%d\n”,(x,y));
则以下叙述正确的是____。
A)输出语句中格式说明的个数少于输出项的个数,不能正确输出。
B)运行时产生出错信息。
C)输出值为2002。
D)输出值为2003。
12、设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面2位,并将第3位四舍五入的是____。
A)x=x*100+0.5/100.0 B)x=(x*100+0.5)/100.0
C)x=(int)(x*100+0.5)/100.0 D)x=(x/100+0.5)*100.0
13、要求以下程序功能是计算:
main(){intn;floats;s=1.0;
for(n=10;n>1;n--)s=s+1/n;
printf(“%6.4f\n”,s);}
程序运行后输出结果错误,导致错误结果的程序行是____。
A)s=1.0; B)for(n=10;n>1;n--) C)s=s+1/n; D)printf(“%6.4f\n”,s);
14、在一个C程序中____。
A)main函数必须出现在所有函数之前。
B)main函数可以在任何地方出现。
C)main函数必须出现在所有函数之后。
D)main函数必须出现在固定位置。
15、下列叙述中,正确的是____。
A)C语言中既有逻辑类型也有集合类型。
B)C语言中没有逻辑类型但有集合类型。
C)C语言中有逻辑类型但没有集合类型。
D)C语言中既没有逻辑类型也没有集合类型。
16、下列关于C语言用户标识符的叙述中正确的是____。
A)用户标识中可以出现下划线和中划线(减号)。
B)用户标识符中不可以出现中划线,但可以出现下划线。
C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头。
D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头。
17、下列关于单目运算符++、--的叙述中正确的是____。
A)它们的运算对象可以是任何变量和常量。
B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量。
C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量。
D)它们的运算对象可以是char型变量、int型变量和float型变量。
18、有以下程序:
main(){inti=10,j=1;printf(“%d,%d\n”,i--,++j);}
执行后输出结果是___。
A)9,2B)10,2 C)9,1 D)10,1
填空题
1、以下sum函数的功能是计算下列级数之和。
,请给函数中的各变量正确赋初值。
doublesum(doublex,intn)
{inti;doublea,b,s;
_________s=1.0;a=1;b=1;
for(i=1;i<=n;i++)
{a=a*x;b=b*i;s=s+a/b;}
returns;}
2、若有语句:
inti=-19,j=i%4;printf(“%d\n”,j);
则输出结果是_____。
(注:
%运算结果的符号与%前面数据的符号相同)
同步练习
1、一个C语言的源程序中,_____。
A)必须有一个主函数 B)可能有多个主函数
C)必须有除主函数外其它函数 D)可以没有主函数
2、C语言程序总是从___开始执行。
A)第一条语句 B)第一个函数 C)主函数 D)子程序
3、对C语言源程序执行过程描述正确是____。
A)从main函数开始执行。
B)从程序中第一个函数开始执行,到最后一个函数结束。
C)从main函数开始执行,到源程序最后一个函数结束。
D)从第一个函数开始,到main函数结束。
4、以下选项中合法的用户标识符是____。
A)longB)_2TestC)3DmaxD)for
5、以下对C语言的描述中正确是_____。
A)C语言源程序中可以有重名的函数。
B)C语言源程序要求每行只能书写一条语句。
C)注释可以出现在C语言源程序中的任何位置。
D)最小的C语言源程序中没有任何内容。
6、在C语言中,不正确的int类型常数是____。
A)32768 B)0 C)037 D)0xAF
7、以下选项中属于C语言的数据类型是____。
A)复数型 B)逻辑型 C)双精度型 D)集合型
8、下列变量中定义合法的是____。
A)shor_a=1-1e-1;B)doubleb=1+5e2.5;C)longdo=0xfdal;D)float2_and=1-e-3;
9、C语言中运算对象必须是整形的运算符是____。
A)%=B)/C)=D)*=
10、设有intx=11;,则表达式(x++*1/3)的值是____。
A)3 B)4 C)11 D)12
11、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是___。
A)1 B)2 C)2.0 D)12
12、若有以下程序段:
intc1=1,c2=2,c3;c3=1.0/c2*c1;,则执行后,c3中的值是___。
A)0 B)0.5 C)1 D)2
13、执行下列程序的输出结果是___(小数点后只定1位)。
main(){doubled;floatf;longm;inti;
i=f=m=d=20/3;
printf(“%d%ld%f%f\n”,i,m,f,d);}
A)666.06.0B)6666.76.7C)666.06.7D)666.76.0
14、设有以下的变量定义:
inti=8,k,a,b;
unsignedlongw=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)
15、执行下列程序后的输出结果是___。
注:
此题应注意C
main(){doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf(“%d\n”,d*y);}
A)3B)3.2C)0D)3.07
16、若变量已正确定义并赋值,下面符合C语言语法的表达式是____。
A)a:
=b+1 B)a=b=c+2 C)int18.5%3 D)a=a+7=c+b
17、假定有以下变量定义:
intk=7,x=12;,则值为3的表达式是___。
A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)
18、设x和y均为int型变量,则下列语句:
x+=y;y=x-y;x-=y;的功能是____。
A)把x和y按从大到小排列 B)把x和y按从小到大排列
C)无确定结果 D)交换x和y中的值
19、设x、y、z和k都是int型变量,则执行表达式:
x=(y=4,z=16,k=32)后,x的值为__。
A)4 B)16 C)32 D)52
二、填空题
1、以下程序的输出结果是____。
voidmain(){unsignedshorta=65536;intb;printf(“%d\n”,b=a);}
2、若有定义:
inta=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是____。
c=(a-=(b-5));c=(a%11)+(b=3);
3、设有以下变量定义,并已赋确定的值,charw;intx;floaty;doublez;
则表达式:
w*x+z-y年求得的数据类型为__double或双精度型__。
三、顺序结构
典型考试题
1、以下4个选项中,不能看作一条语句的是___。
A){;} B)a=0,b=0,c=0; C)if(a>0); D)if(b==0)m=a;n=2;
2、有以下程序:
main(){intx=102,y=012;
printf(“%2d,%2d\n”,x,y);}
执行后输出结果是____。
A)10,01 B)02,12 C)102,10 D)02,10
3、有定义语句:
intx,y;,若要通过语句scanf(“%d,%d”,&x,&y);使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是____。
A)11 12<回车> B)11, 12<回车> C)11,12<回车> D)11,<回车> 12<回车>
4、若有以下程序段(n为八进制数)
intm=32767,n=032767;printf(“%d,%o\n”,m,n);
执行后输出结果是____。
A)32767,32767 B)32767,032767 C)32767,77777 D)32767,077777
5、若有以下程序段:
intm=0xabc,n=0xabc;
m-=n;
printf(“%X\n”,m);
执行后输出的结果是____。
A)0X0 B)0x0 C)0 D)0XABC
6、有以下程序段:
intm=0,n=0;charc=’a’;
scanf(“%d%c%d”,&m,&c,&n);
printf(“%d,%c,%d\n”,m,c,n);
若从键盘上输入:
10A10<回车>,则输出结果是____。
A)10,A,10 B)10,a,10 C)10,a,0 D)10,A,0
7、设有定义:
inta,*pa=&a;,以下scanf语句中能正确为变量a读入数据的是____。
A)scanf(“%d”,pa); B)scanf(“%d”,a); C)scanf(“%d”,&pa); D)scanf(“%d”,*pa);
填空题
1、有以下语句段:
intn1=10,n2=20;
printf(“_____”,n1,n2);\nn1=%d\nn2=%d
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10
n2=20
2、若有以下程序:
main(){inti,j;scanf(“i=%d,j=%d”,&i,&j);printf(“i=%d,j=%d\n”,i,j);}
要求给i赋值10,给j赋值20,则应该从键盘输入_i=10,j=20<回车>____。
3、若有以下程序:
此题要注意
main(){inta=4,b=3,c=5,t=0;
if(a
if(aprintf(“%d%d%d\n”,a,b,c);}
执行后输出结果是_503____。
练习
1、若有变量a,i已正确定义,且i已正确赋值,合法的语句是____。
A)a==1 B)++i C)a=a++=5 D)a=int(i)
2、有如下程序:
main(){inty=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}
运行该程序的输出结果是____。
A)3 4 B)4 2 C)4 3 D)3 3
3、下列程序的运行结果是____。
main(){inta=2,c=5;printf(“a=%d,b=%d\n”,a,c);}
A)a=%2,b=%5 B)a=2,b=5 C)a=d,b=d D)A=%d,b=%d
4、以下说法中正确的是____。
A)#define和printf都是C语句。
B)#define是C语句,而printf不是。
C)printf是C语句,但#define不是。
D)#define和printf都不是C语句。
5、以下程序的输出结果是____。
main(){intk=17;printf(“%d,%o,%x\n”,k,k,k);}
A)17,21,0x11 B)17,17,17
C)17,0x11,021 D)17,21,11
6、若有说明:
long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是___。
A)*p=&a;scanf(“%ld”,p); B)p=(long*)malloc(4);scanf(“%ld”,p);
C)scanf(“%ld”,p=&a);C)scanf(“%ld”,&a);
7、以下叙述正确是____。
A)输入项可以是一个实型常量,如:
scanf(“%d”,3.5)。
B)只有格式控制,没有输入项,能正确输入数据到内存,如:
scanf(“a=%d,b=%d);。
C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:
scanf(“%4.2f”,&f)。
D)当输入数据时,必须指明变量的地址,例如:
scanf(“%f”,&f);。
8、以下程序的输出结果是____。
main(){inta=12,b=12;printf(“%d%d\n”,--a,++b);}
A)1010 B)1212 C)1110 D)1113
填空题
1、若想通过以下输入语句使得a=5.0,b=4,c=3,则输入数据的形式应该是_5.0,4,c=3<回车>或5,4,c=3<回车>_。
…….
intb,c;floata;
scanf(“%f,%d,c=%d”,&a,&b,&c);
……..
2、有4条语句:
x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,写出一条同一功能的赋值语句(不得与列举的相同)____。
3、以下程序的输出的结果是___。
main(){inta=177;printf(“%o\n”,a);}
4、以下程序的输出结果是____。
main(){inta=1,b=2;a=a+b;b=a-b;a=a-b;printf(“%d,%d\n”,a,b);}
四、选择结构
典型考题
1、以下程序段中与语句k=a>b?
(b>c?
1:
0):
0;功能等价的是____。
A)if((a>b&&(b>c))k=1;elsek=0; B)if((a>b)||(b>c))k=1;elsek=0;
C)if(a<=b)k=0;elseif(b<=c)k=1; D)if(a>b)k=1;elseif(b>c)k=1;elsek=0;
2、有以下程序:
main(){chark;inti;
for(i=1;i<3;i++){
scanf(“%c”,&k);switch(k){case‘0’:
printf(“another\n”);case‘1’:
printf(“number\n”);}}}
程序运行时,从键盘输入:
01<回车>,程序执行后的输出结果是___。
case穿透
A)another
number
B)another
number
another
C)another
number
number
D)number
number
3、有以下程序:
main(){intx=0,y=5,z=3;while(z-->0&&++x<5)y=y-1;printf(“%d,%d,%d\n”,x,y,z);}
程序执行后的输出结果是____。
A)3,2,0 B)3,2,-1 C)4,3,-1 D)5,-2,-5
4、有定义语句:
inta=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不等于3的是C。
A)if(celseif(belsex=3;
B)if(a<3)x=3;
elseif(a<2)x=2;
elsex=1;
C)if(a<3)x=3;
if(a<2)x=2;
if(a<1)x=1;
D)if(a
if(bif(c5、有以下程序:
此题应注意短路逻辑
main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a
程序运行后的输出结果是____。
A)0,0 B)0,1 C)1,0 D)1,1
6、有以下程序:
注意case穿透的问题
main(){inti;
for(i=0;i<3i++)
switch(i){
case1:
printf(“%d”,i);
case2:
printf(“%d”,i);
default:
printf(“%d”,i);}}}
执行后输出的结果是_____。
A)011122 B)012 C)012020 D)120
7、有以下程序:
main(){inti=1,j=1,k=2;if((j++||k++)&&i++)printf(“%d,%d,%d\n”,i,j,k);}
执行后的输出结果是____。
A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3
8、有以下程序:
main(){inta=5,b=4,c=3,d=2;
if(a>b>c)printf(“%d\n”,d);
elseif((c-1>=d)==1)printf(“%d\n”,d+1);
elseprintf(“%d\n”,d+2);}
执行后输出结果是____。
A)2 B)3 C)4 D)编译时有错,无结果
填空题
1、有以下程序:
main(){intn=0,m=1,x=2;
if(!
n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf(“%d\n”,x);}
执行后输出结果是____。
2、以下程序运行后的输出结果是____。
main(){intp=30;printf(“%d\n”,(p/3>0?
p/10:
p%3));}
3、以下程序运行后的输出结果是____。
main(){inta=1,b=3,c=5;
if(c=a+b)printf(“yes\n”);
elseprintf(“no\n”);
4、以下主程序运行后的输出结果是____。
main(){inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i%10){
case0:
m++;n++;break;
case10:
n++;break;
default:
k++;n++;}
printf(“%d%d%d\n”,m,n,k);}
5、有以下程序:
main(){intp,a=5;
if(p=a!
=0)printf(“%d”,p);
elseprintf(“%d\n”,p+2);}
执行后输出结果是____。
练习
1、有如下程序:
main(){inta=2,b=1,c=2;
if(a
printf(“%d\n”,c);}
该程序的输出结果是___。
A)0 B)1 C)2 D)3
2、有如下程序