C语言复习题文档格式.docx
《C语言复习题文档格式.docx》由会员分享,可在线阅读,更多相关《C语言复习题文档格式.docx(22页珍藏版)》请在冰点文库上搜索。
10;
i++)a[i]=i;
3;
i++)p[i]=a[i*(i+1)];
i++)k+=p[i]*2;
printf(“%d\n”,k);
}
A)20B)21C)22D)23
7、以下程序的输出结果为:
charstr[]="
ab\n\012\\\"
"
;
strlen(str));
A)3B)4C)6D)12
8、以下程序的输出结果是:
{intn[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;
i++)for(j=0;
j<
=i;
j++)s+=a[i][j];
%d\n"
s);
A)18B)19C)20D)21
9、设有以下宏定义:
#defineN3
#defineY(n)((N+1)*n)
则执行语句:
z=2*(N+Y(5+1));
后,z的值为:
A)出错B)42C)48D)54
10、下列程序执行后输出的结果为:
f(inta)
{staticintb,c=3;
a=b;
b=++c;
return(a);
{inta=2,j,k;
for(j=0;
2;
j++)k=f(a);
A)4B)0C)6D)5
11、下列程序语句的输出是:
intn=0;
while(n++<
=2);
n);
(A)2(B)3(C)4(D)有语法错误
12、下列程序语句的输出是:
inta=011;
++a);
(A)12(B)11(C)10(D)9
13、执行语句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)!
((x<
y)&
!
z||1)
15、对下述程序段描述正确的是:
intk=0;
while(k=1)k++;
A)有语法错误,不能执行B)循环是无限的
C)循环体语句一次也不能执行D)循环体语句执行一次
16、下述程序的运行结果是:
#include"
stdio.h"
{inti;
for(i=1;
=5;
i++)
{if(i%2)printf("
*"
elsecontinue;
printf("
#"
}
$\n"
(A)*#*#*#$(B)#*#*#*$(C)*#*#$(D)#*#*$
17、下述程序的输出结果是:
intx;
voidfun();
voidmain()
{intx=1;
if(x==1){intx=2;
%d,"
x++);
{externintx;
++x);
fun();
voidfun(){printf("
A)2,1,1B)1,2,1C)2,2,2D)2,2,1
18、下面对宏定义的描述,不正确的是:
A)宏不存在类型问题,宏名无类型,它的参数也无类型
B)宏替换不占用运行时间
C)宏替换是先求出实参表达式的值,然后代入形参运算求值
D)其实,宏替换只不过是字符替代而已
19、以下程序的输出结果是:
#include<
stdio.h>
intfunc(inta,intb);
{intk=4,m=1,p;
p=func(k,m);
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,8
20、若有说明:
inta[][3]={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;
ch[a]>
=’0’&
ch[a]<
=’9’;
a++)s=10*s+ch[a]-‘0’;
a)600b)6c)0d)出错
20、在c程序中,注释部分从哪开始,到哪结束?
a)从*/开始,到/*结束b)从REM开始,无结束标志
c)无起始标志d)从/*开始,到*/结束
20、针对下列语句的正确的叙述为()
charx[]=”abcd”;
chary[]={‘a’、‘b’、‘c’、‘d’};
a)数组x和数组y等价b)数组x和数组y的长度相同
c)数组x的长度大于y的长度e)数组x的长度小于y的长度
22、下列程序段的输出结果为(u代表空格)()
chars[10];
s=“abcd”;
printf(“%s\n”,s);
a)abcdb)ac)abcduuuuud)编译不通过
23、若j为int型变量,则下列语句的执行结果为()
for(j=10;
j>
j--)
{if(j%3)j--;
--j;
--j;
printf(“%d”,j);
a)63b)74c)62d)73
24、下列程序段的输出结果为()
intx=3;
do{printf(“%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-c
26、下列程序段的运行结果是:
intn=0;
while(n++<
printf("
(A)2(B)3(C)4(D)有语法错误
27、若有说明:
inta[3][4];
则对a数组元素的正确引用是:
(A)a[2][4](B)a[1,3](C)a[1+1][0](D)a
(2)
(1)
45、针对以下程序段,说法正确的是()
inta=5,b=0,c=0;
if(a=b+c)printf("
***"
&
(A)有语法错误不能通过编译(B)可以通过编译但不能通过连接
(C)输出*** (D)输出 &
28、执行下面的程序段后,a的值为()
inta,b;
for(a=1,b=4;
a<
=60;
a++)
{if(b>
=23)break;
if(b%3==1){b+=3;
continue;
b-=5;
(A)7(B)8(C)9(D)10
29、以下描述中错误的是()
(A)函数调用可以出现在执行语句中
(B)函数调用可以出现在表达式中
(C)函数调用可以作为函数的实际参数
(D)函数调用可以作为函数的形式参数
30、以下程序的输出结果是()
#defineADD(x)x+x
{intm=1,n=2,k=3;
intsum=ADD(m+n)*k;
sum=%d"
sum);
(A)sum=9(B)sum=10(C)sum=12(D)sum=18
31、以下程序的输出结果是()
voidfun(inta,intb,intc)
{a=456;
b=567;
c=678;
{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,456
32、下面程序应能对两个整型变量的值进行交换。
以下说法正确的是()
{inta=10,b=20;
(1)a=%d,b=%d\n"
a,b);
swap(&
a,&
b);
(2)a=%d,b=%d\n"
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的值为:
for(a=1,b=1;
=100;
=20)break;
}b-=5;
A.7B.8C.9D.10
34.该程序的输出结果是多少?
#include<
main()
{inti,j,x=0;
i++){x++;
=3;
j++){if(j%2)continue;
x++;
}}
x=%d\n"
}
A.x=4B.x=8C.x=6D.x=12
35.下面这个程序的输出是什么?
main(){inty=10;
while(y--);
y=%d\n"
y);
A.y=0B.while构成死循环C.y=1D.y=-1
36C语言可执行程序从什么地方开始执行?
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>
=z)d)(x>
=z)
40、假定a和b为int型变量,则执行以下语句后b的值为:
a=2;
b=8;
do{b-=a;
a++;
}while(b--<
0);
a)6b)4c)–1d)5
41、下述对C语言字符数组的描述中错误的是:
a)字符数组可以存放字符串
b)字符数组中的字符串可以整体输入、输出
c)可以用关系运算符对两个字符串进行比较
d)不能在赋值语句中通过赋值运算符“=”对字符数组整体赋值
42、以下程序的输出结果是:
intf(intx,inty)
{intz;
while(y){z=x%y;
x=y;
y=z;
}return(x);
{inta=32,b=24,c;
c=f(a,b);
printf(“%d\n”,c);
a)6b)7c)8d)9
二、多项选择题
1、指出下面合法的标识符:
A.3abB.intC.ABCD.a_3
E.sum.aF.#abcG._stu2H.abcf
2.指出下面哪些是合法的用户定义的标识符:
A.P-SB.putcharC.doubleD._908
E.*parF.sheep!
G.windH.xy
3.以下哪些不是C语言提供的合法的关键字:
A.charB.swicthC.CaseD.default
4.指出下面哪些是合法的关键字:
A.charB.abcC.printfD.Int
E.floatF.defineG.includeH.PI
5.下面哪些是定义局部变量储存类别的关键字?
A.intB.autoC.staticD.float
E.registerF.externG.unsignedH.signed
6.C语言中整形常量按进制划分,有以下几种:
A.十六进制常量B.十进制常量C.八进制常量D.二进制常量
7.下面哪些写法是对的,而且是常量?
A.125B.-.456C.1.25e20D.'
AB'
E.E6F.0238G.0xabcdefH."
\n\\\'
\123"
8.请从下面的选项中选出正确的C语言的转义字符。
A.'
//'
B.'
\'
C.'
\t'
D.'
\n'
E.'
\1011'
F.'
/018'
G.'
/123'
H.'
\xaa'
9.如果要把常量327存入变量a中,a可以定义成哪些类型?
A.intB.charC.longD.float
10.指出下面各说明语句中哪些是合法的:
A.intabcd[0x80];
B.char9ab[10];
C.charchi[-200];
D.intaaa[5]={3,4,5};
E.floatkey[]={3.0,4.0,1,0};
F.chardisk[];
G.intn=2,floppy[n];
H.intcash[4]={1,2,3,4,5,6};
11.下列语句中不符合C语言语法的语句有
A.a=7+b,c=a+7;
B.a=7+b+c=a+7;
C.a=7+b,b++,a+7;
D.a=7+b++=a+7;
12.指出下面错误的表达式:
A.a+b=5B.56=a11C.i=i++
D.5.6+6.2%3.1E.12F.a=5,b=6,c=7
13.若a为整型变量,则以下表达式与表达式a!
=0真假值情况相同有:
A.a>
0||a<
0B.aC.!
a==0D.!
a
15.若变量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.chars[10];
scanf("
%s"
&
s);
B.charst[4][5]={"
ABCDE"
C.chars[5]={'
A'
'
B'
C'
D'
E'
D.chars[50];
s="
18.不合法的数组定义是
A.inta[]="
string"
B.inta[5]={0,1,2,3,4,5};
C.vhsts="
D.chara[]={'
0'
1'
2'
3'
4'
5'
19.指出下面哪些是保留字:
A.charB.abcC.printfD.IntE.floatF.defineG.includeH.PI
20.指出下面哪些是合法的用户定义的标识符?
A.P-SB.putcharC.doubleD._908E.*parF.sheep!
G.windH.xy
21.C语言的基本类型哪些:
A.整型B.枚举型C.数组型D.指针型E.字符型F.构造型G.实形H.空类型
22.这段程序中的常量有:
#definePI3.14
voidmain()
{intsum;
sum=10+15;
sum=%d\n"
resultis25\n"
这段程序中常量有:
A.10B.sumC.15D.25E.mainF.PI
23.C语言的主要特点有哪些?
A.简洁、紧凑,使用方便、灵活,易于学习和应用。
B.C语言是面向结构化程序设计的语言。
C.C语言允许直接对位、字节和地址进行操作。
D.数据类型丰富。
E.C语言生成的目标代码质量高。
24、以下说法正确的有:
A.输入项可以为一个实型常量,如scanf("
3.5);
B.只有格式控制,没有输入项,就不能进行正确输入,如scanf("
a=%d,b=%d"
);
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("
%4.2f"
f);
D.当输入数据时,必须指明变量的地址,如scanf("
25、以下叙述中正确的有()
(A)预处理命令行都必须以#号开始
(B)在程序中凡是以#号开始的语句行都是预处理命令行
(C)C程序在执行过程中对预处理命令行进行处理
(D)以下是正确的宏定义
#defineIBM_PCpc#3
26、以下正确的叙述有()
(A)C语言的预处理功能仅仅是指完成宏替换和包含文件的调用
(B)预处理命令只能位于C源程序文件的首部
(C)一条预处理命令必须单独占一行
(D)C程序中,编译预处理是在编译开始之前进行的
三、填空题
1、设a=3,b=4,c=5,则逻辑表达式a||b+c&
b-c的值是:
1。
2、语句printf("
%5.3f\n"
123456.12345);
的输出为__123456.123_____。
11。
inti=0,sum=1;
do{sum+=i++;
}while(i<
5);
4、若定义:
inta[3][4]={{1,2},{0},{4,6,8,10}};
则初始化后,a[1][2]得到的
值是:
0;
a[2][1]得到的值是:
6。
5、下面程序的输出结果是:
t1=7,t2=70。
#defineMAX(x,y)(x)>
(y)?
(x):
(y)
{inta=5,b=2,c=3,d=3,t1,t2;
t1=MAX(a+b,c+d)*10;
t2=MAX(c+d,a+b)*10;
t1=%d,t2=%d"
t1,t2);
6、要使以下程序段输出3个整数,请填入一个整数:
for(j=1;
=7(7-14都可以);
printf(“%d\n”,j+=j++));
7、下面程序段是找出整数的所有因子(包括1和整数本身),请填空:
scanf("
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);
j-1;
i++,j--)
{m=str[i];
str[i]=str[j-1];
str[j-1]=m;
%s\n"
str);
9、设x和y均为int型变量,且x=1,y=2;
则表达式1.0+x