C语言复习题文档格式.docx
《C语言复习题文档格式.docx》由会员分享,可在线阅读,更多相关《C语言复习题文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
printf(%dn,s);
A)18B)19C)20D)219、设有以下宏定义:
()#defineN3#defineY(n)(N+1)*n)则执行语句:
z=2*(N+Y(5+1);
后,z的值为:
A)出错B)42C)48D)5410、下列程序执行后输出的结果为:
()f(inta)staticintb,c=3;
b=+c;
return(a);
main()inta=2,j,k;
for(j=0;
j2;
j+)k=f(a);
A)4B)0C)6D)511、下列程序语句的输出是:
()intn=0;
while(n+=2);
printf(%d,n);
(A)2(B)3(C)4(D)有语法错误12、下列程序语句的输出是:
()inta=011;
printf(%dn,+a);
(A)12(B)11(C)10(D)913、执行语句for(i=1;
i+4;
);
后,变量i的值是:
()(A)3(B)4(C)5(D)不确定14、定义intx=0,y=8,z=9后,则下面表达式的值为0的是:
()(A)x&
y(B)x=y(C)x|y+z&
y-z(D)!
(xy)&
!
z|1)15、对下述程序段描述正确的是:
()intk=0;
while(k=1)k+;
A)有语法错误,不能执行B)循环是无限的C)循环体语句一次也不能执行D)循环体语句执行一次16、下述程序的运行结果是:
()#includestdio.hmain()inti;
i=5;
i+)if(i%2)printf(*);
elsecontinue;
printf(#);
printf($n);
(A)*#*#*#$(B)#*#*#*$(C)*#*#$(D)#*#*$17、下述程序的输出结果是:
()#includestdio.hintx;
voidfun();
voidmain()intx=1;
if(x=1)intx=2;
printf(%d,x+);
externintx;
printf(%d,+x);
fun();
voidfun()printf(%d,x+);
A)2,1,1B)1,2,1C)2,2,2D)2,2,118、下面对宏定义的描述,不正确的是:
()A)宏不存在类型问题,宏名无类型,它的参数也无类型B)宏替换不占用运行时间C)宏替换是先求出实参表达式的值,然后代入形参运算求值D)其实,宏替换只不过是字符替代而已19、以下程序的输出结果是:
()#includeintfunc(inta,intb);
voidmain()intk=4,m=1,p;
p=func(k,m);
printf(%d,p);
intfunc(inta,intb)staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
A)8,17B)8,16C)8,20D)8,820、若有说明:
inta3=1,2,3,4,5,6,7;
则a数组第一维的大小是:
()(A)2(B)3(C)4(D)无确定值19、下列程序段执行后,s的值为:
()charch=”600”;
inta,s=0;
for(a=0;
cha=0&
cha3;
j-)if(j%3)j-;
-j;
printf(“%d”,j);
a)63b)74c)62d)7324、下列程序段的输出结果为()intx=3;
doprintf(“%3d”,x-=2);
while(!
(-x);
a)1b)30c)1-2d)死循环25、设变量已正确定义并赋值,则符合C语言语法的表达式是:
()(A)a=a+5;
(B)a=b=c+(C)int(34.5%5)(D)a=a+8=b-c26、下列程序段的运行结果是:
(A)2(B)3(C)4(D)有语法错误27、若有说明:
inta34;
则对a数组元素的正确引用是:
()(A)a24(B)a1,3(C)a1+10(D)a
(2)
(1)45、针对以下程序段,说法正确的是()inta=5,b=0,c=0;
if(a=b+c)printf(*);
elseprintf(&
(A)有语法错误不能通过编译(B)可以通过编译但不能通过连接(C)输出*(D)输出&
28、执行下面的程序段后,a的值为()inta,b;
for(a=1,b=4;
a=23)break;
if(b%3=1)b+=3;
continue;
b-=5;
(A)7(B)8(C)9(D)1029、以下描述中错误的是()(A)函数调用可以出现在执行语句中(B)函数调用可以出现在表达式中(C)函数调用可以作为函数的实际参数(D)函数调用可以作为函数的形式参数30、以下程序的输出结果是()#defineADD(x)x+xmain()intm=1,n=2,k=3;
intsum=ADD(m+n)*k;
printf(sum=%d,sum);
(A)sum=9(B)sum=10(C)sum=12(D)sum=1831、以下程序的输出结果是()voidfun(inta,intb,intc)a=456;
b=567;
c=678;
main()intx=10,y=20,z=30;
fun(x,y,z);
printf(“%d,%d,%d”,z,y,x);
(A)30,20,10(B)10,20,30(C)456,567,678(D)678,567,45632、下面程序应能对两个整型变量的值进行交换。
以下说法正确的是()main()inta=10,b=20;
printf
(1)a=%d,b=%dn,a,b);
swap(&
a,&
b);
printf
(2)a=%d,b=%dn,a,b;
swap(intp,intq)intt;
t=p;
p=q;
q=t;
(A)该程序完全正确(B)该程序有错,只要将语句swap(&
中的参数改为a,b即可(C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针变量即可(D)以上说法都不正确33.执行下面的程序段后,a的值为:
inta,b;
for(a=1,b=1;
a=20)break;
A.7B.8C.9D.1034.该程序的输出结果是多少?
#includemain()inti,j,x=0;
i2;
i+)x+;
j=3;
j+)if(j%2)continue;
x+;
printf(x=%dn,x);
A.x=4B.x=8C.x=6D.x=1235.下面这个程序的输出是什么?
#includemain()inty=10;
while(y-);
printf(y=%dn,y);
A.y=0B.while构成死循环C.y=1D.y=-136C语言可执行程序从什么地方开始执行?
A.程序中第一条可执行语句B.程序中第一个函数C.程序中的main函数D.包含文件中的第一个函数37.以下对C语言函数的有关描述中,正确的是:
A.在C中,调用函数时,只能把实参的值传给形参,形参的值不能传给实参B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中38.以下叙述中不正确的是:
A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值B.在C中,在调用函数时,实参和对应形参在类型上只需赋值兼容C.在C中,全局变量的隐含类别是自动存储类别D.在C中,函数形参可以说明为register变量39、表示关系x=y=z的c语言表达式为:
()a)(x=y)&
(y=z)b)(x=y)AND(y=z)c)(x=y=z)d)(x=y)&
(y=z)40、假定a和b为int型变量,则执行以下语句后b的值为:
()a=2;
b=8;
dob-=a;
a+;
while(b-0|a0B.aC.!
a=0D.!
a15.若变量f已说明为float类型,i为int类型,则下面哪些表达式(或语句)能够实现将f中的数值保留小数点后两位,第三位进行四舍五入的运算?
A.f=(f*100+0.5)/100.0B.i=f*100+0.5,f=i/100.0;
C.f=(int)(f*100+0.5)/100.0;
D.f=(f/100+0.5)*100.0;
16.请选择您认为正确的说法。
A.在C语言中,函数可以嵌套定义。
B.程序中的注释部分可有可无,通常可以省略。
C.在函数中,只能有一条return语句。
D.C程序中,编译程序会检查数组下标是否越界。
E.在C程序中,ABC和abc是两个不同的变量。
F.在C语言中,函数中的变量可以赋初值,每调用一次该函数,就赋一次初值。
G.C语言中不能对数组名进行加减和赋值运算。
17.下面各语句行中,不能正确进行赋字符串操作的语句行是A.chars10;
scanf(%s,&
s);
B.charst45=ABCDE;
C.chars5=A,B,C,D,E;
D.chars50;
s=ABCDE;
18.不合法的数组定义是A.inta=string;
B.inta5=0,1,2,3,4,5;
C.vhsts=string;
D.chara=0,1,2,3,4,5;
19.指出下面哪些是保留字:
A.charB.abcC.printfD.IntE.floatF.defineG.includeH.PI20.指出下面哪些是合法的用户定义的标识符?
A.P-SB.putcharC.doubleD._908E.*parF.sheep!
G.windH.xy21.C语言的基本类型哪些:
A.整型B.枚举型C.数组型D.指针型E.字符型F.构造型G.实形H.空类型22.这段程序中的常量有:
#definePI3.14voidmain()intsum;
sum=10+15;
printf(sum=%dn,sum);
printf(resultis25n);
这段程序中常量有:
A.10B.sumC.15D.25E.mainF.PI23.C语言的主要特点有哪些?
A.简洁、紧凑,使用方便、灵活,易于学习和应用。
B.语言是面向结构化程序设计的语言。
C.语言允许直接对位、字节和地址进行操作。
D.数据类型丰富。
E.语言生成的目标代码质量高。
24、以下说法正确的有:
A输入项可以为一个实型常量,如scanf(%f,3.5);
B只有格式控制,没有输入项,就不能进行正确输入,如scanf(a=%d,b=%d);
C当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(%4.2f,&
f);
D当输入数据时,必须指明变量的地址,如scanf(%f,&
25、以下叙述中正确的有()(A)预处理命令行都必须以#号开始(B)在程序中凡是以#号开始的语句行都是预处理命令行(C)C程序在执行过程中对预处理命令行进行处理(D)以下是正确的宏定义#defineIBM_PCpc#326、以下正确的叙述有()(A)C语言的预处理功能仅仅是指完成宏替换和包含文件的调用(B)预处理命令只能位于C源程序文件的首部(C)一条预处理命令必须单独占一行(D)C程序中,编译预处理是在编译开始之前进行的三、填空题1、设a=3,b=4,c=5,则逻辑表达式a|b+c&
b-c的值是:
1。
2、语句printf(%5.3fn,123456.12345);
的输出为_123456.123__。
11。
inti=0,sum=1;
dosum+=i+;
while(i(y)?
(x):
(y)main()inta=5,b=2,c=3,d=3,t1,t2;
t1=MAX(a+b,c+d)*10;
t2=MAX(c+d,a+b)*10;
printf(t1=%d,t2=%d,t1,t2);
6、要使以下程序段输出3个整数,请填入一个整数:
for(j=1;
j=7(7-14都可以);
printf(“%dn”,j+=j+);
7、下面程序段是找出整数的所有因子(包括1和整数本身),请填空:
scanf(%d,&
x);
i=1;
for(;
i=x;
)if(x%i=0)printf(%3d,i);
i+8、函数fun的功能是:
使一个字符串按逆序存放,请填空voidfun(charstr)charm;
inti,j;
for(i=0,j=strlen(str);
ij-1;
i+,j-)m=stri;
stri=strj-1;
strj-1=m;
printf(%sn,str);
9、设x和y均为int型变量,且x=1,y=2;
则表达式1.0+x/y的值为1.0。
10、设i,j,k均为int型变量,则执行完下列for循环:
for(i=0,j=10;
i=j;
i+,j-)k=i+j;
之后,k的值为10。
11、若输入字符串:
abcde,则以下while循环体将执行0次。
while(ch=getchar()=e)printf(*);
12、下面程序段统计从键盘输入的字符中数字字符的个数,换行符结束,请填空intn=0;
charc;
c=getchar();
while(c!
=n)if(c=0&
c=9)n+;
13、若定义:
inta34=1,2,0,4,6,8,10;
则初始化后,a12得到的值是:
0;
a21得到的值是:
6。
14、若x为int型变量,则执行以下语句x=7;
x+=x-=x+x;
后x的值是:
-14。
15、TurboC环境中,用RUN菜单中的RUN命令运行C程序的快捷键是Ctrl+F9。
16、若有定义:
inta=2,4,6,8,10,12,*p=a;
则*(p+1)的值是4,*(a+5)的值是12。
17、若已知a=7,b=3,c=0,则表达式a+b|c的运算结果是1。
18、条件“2x3或者x-10”的C语言表达式是:
2&
X3|x-10。
19、若变量a、b为int型,以下语句可以不借助任何变量把a、b的值交换,请填空:
a+=b;
b=a-b;
a-=b;
20、以下程序的输出结果是12。
inta10,i,k=0;
i4;
i+)k+=ai+i;
printf(%dn,k);
21、以下程序中for语句的循环体被执行的次数为:
#defineN2#defineMN+2#defineNUM2*M+1main()inti;
iNUM;
i+)printf(%dn,i);
22、下面程序段是找出整数的所有因子(包括1和整数本身),请填空:
(15);
i+23、下述程序的功能是查找数组中元素的最大值输出,请填空完成。
#defineA10main()intaA;
intmax,i;
#ifA=10for(i=0;
iA;
i+)ai=10+i;
#elsefor(i=0;
i+)scanf(%d,&
ai);
#endifmax=a0;
i+)if(maxai)max=ai;
printf(Max=%dn,max);
24、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。
#includemain()inta23=1,2,3,4,5,6;
intb32,i,j;
prntf(arrarya:
n);
J=2;
j+)printf(%5d,aij);
Bji=aij;
printf(n);
printf(arrayb:
i=2;
j=1;
j+)printf(%5d,bij);
25、若a是int型变量,则表达式(a=4*5,a*2),a+6)的值为26;
若a是int型变量,且a的初值为6,则表达式(a+=a-=a*a)计算后a的值为-60。
26、读懂程序并填空。
#includevoidmain()charch=0x31;
printf(%dn,ch);
/屏幕显示49printf(%on,ch);
/屏幕显示64printf(%cn,ch);
/屏幕显示127、执行下面程序段后,k的值是36。
k=1;
n=263;
dok*=n%10;
n/=10;
while(n);
29、设有以下程序,为使之正确运行,请在下面的横线处填入应包含的命令行。
#include#includemain()printf(n);
try_me();
/*函数调用*/printf(n);
注:
try_me()函数在myfile.txt中有定义,其内容如下:
/*myfile.c*/try_me()charc;
if(c=getchar()!
=n)try_me();
putchar();
四、判断题判断题:
(F)1、(n+1)+是一个正确的表达式。
(F)2、若有说明intc;
则while(c=getchar();
是错误的C语句。
(F)3、break语句只能用于for循环。
(F)4、使用continue和break语句,都可以使得C程序的执行直接从循环中跳出。
(T)5、C语言不支持动态数组。
(T)6、在一个函数内部的复合语句中定义的变量,只在该复合语句范围内有效。
(T)7、C程序中,一个文件中的函数可以引用存储在另一个文件中的函数和变量。
(T)8、内部静态变量有隐含初值。
(F)9、一个C程序的执行是从本程序的main函数开始,到本程序文件的最后一个函数结束。
(T)10、一个函数通过其他函数间接的调用了自身,这种情况也是一种递归调用。
(F)11、在对一个C程序进行编译的过程中,可以发现注释中的错误。
(T)12、continue语句不能作用于switch语句。
(F)13、for循环只能用于循环次数已经确定的情况。
(F)14、C语言认为变量number和NuMbEr是相同的。
(F)15、do-while循环中,根据情况可省略while。
(F)16、形参可以是常量、变量或表达式。
(T)17、若return语句指定的返回值类型与函数值的类型不一致,则以函数值的类型为准。
(F)18、若用数组名作函数的实参,则传递给形参的是数组中全部元素的值。
(F)20、设有数组定义intdata5=1,2,3,4,5;
则data5的值为5。
(F)21、Printf()函数总是从新行的起始位置开始打印。
(F)22、在申明变量时必须给出变量的类型。
(F)23、打印三行输出的C语言程序必须用三条printf语句。
(F)24、switch选择结构中必须有default子句。
(T)25、所有的变量在使用前都必须予以申明。
(T)26、求余运算符%只能用于两个整数操作数。
(F)27、如果xy或ay&
ab)为真。
(F)31、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值。
(F)32、putchar函数可以向终端输出一个字符串。
(F)33、库函数中,puts函数是无参函数。
(F)35、C语言中,for语句和do-while语句实现当型循环结构。
五、编程题1、用冒泡法对10个整数排序(由小到大),要求排序操作用函数调用实现。
2、用选择法对10个整数排序(由小到大),要求排序操作用函数调用实现。
3、将一个二维数组行和列的元素互换,存放到另一个二维数组中。
如:
a=12314456b=25364、分别用函数和带参的宏,从三个数(要求从键盘输入三个数)中找出最大数。
5、将一个数组中的值按逆序存放。
例如原来顺序为:
8、6、10、5、2。
要求改为:
2、5、10、6、8。
如有侵权请联系告知删除,感谢你们的配合!