C综合复习题docxWord格式.docx
《C综合复习题docxWord格式.docx》由会员分享,可在线阅读,更多相关《C综合复习题docxWord格式.docx(32页珍藏版)》请在冰豆网上搜索。
![C综合复习题docxWord格式.docx](https://file1.bdocx.com/fileroot1/2022-11/24/661cea56-aef5-4b9e-bd4b-c9d6758e75d4/661cea56-aef5-4b9e-bd4b-c9d6758e75d41.gif)
10.if(表达式)和while(表达式)中的“表达式”()
A.只能是逻辑的B.只能是关系的
C.只能是算术的D.以上三种都可以
11.设inta=0,b=0,m=0,n=0;
则执行(m=a==b)II(n=b==a)后m和n的值分别是()
B.0,1
A.0,0
12.设inta?
b;
为使变量a和b分别获得数据10和20,则下列正确的是()
A.scanf(”%d,%d”,&
a,&
b);
输入数据:
10,20<回车〉
B.scanf(”%d,%d”,&
1020<回车〉
C.
a=10,b=20<
冋车〉
10,20<
回车〉
scanf(”%d,%d”,&
D.scanf("
%d,%d"
a,b);
13.对于函数,正确的说法是()
A.可以嵌套定义
B•定义时有些函数名前可以带星号
C•必须有返回语句
14•设inta[3][4];
,则与元素a
D•必须有形式参数
[0][0]不等价的表达形式是()
■
A.*a
B.**a
D.*(*(a+O)+O)
C.*a[0]
15.设charsi[]={,a,;
b'
;
c,},s2[]="
abc"
;
,则数组si和s2的长度分别是()
A.2,3
B.3,3
C.3,4
D.4,4
16.
A.
设inta=l,b=2;
则执行a=b+2,a++,a+b;
后a和b的值分别是()
1和2B.3和2
D.5和2
17.
设inta=2,b=3,c=4;
则表达式a>
b&
b<
c||b的值是
-1
B.0
D.2
设chars[10]=nabcdeH,t[]=M12345°
,则s和t在内存中分配的字节数分别是()
6和5B.6和6
20.
设inta=10,*p=&
a;
,则执行printf(n%d\nM,*p+a);
的结果是()
B.当函数的形参是数组时形实结合为值传递方式
C.程序中只能有一个main函数
D.无参函数的函数体内不能出现return语句
24.执行下列程序段后输出的结果是()
intx,y,z=l;
for(x=1,y=・1;
x<
y;
x++,y・・)z++;
printf(M%d\nM,z);
A.1B.2
C.5D.6
25.设staticinta[3]={l,2,3};
int*p[]={&
a[0],&
a[l],&
a[2]};
则与数组元素a[l]等价的是()
A.*p[l]B・p[l]
C.*p+lD.p+1
26.设struct
{charname[10];
intage;
}stu[2]={{”Tom"
25},{〃Mary"
26}}?
p=stu;
则执行语句printf("
%s%d\rT,p->
name,stu[1].age);
后输出结果是()
A.Tom25B・Tom26
C.Mary25D.Mary26
27.设typedefdoubleDB;
则与DBu[5];
的等价形式是()
A.doubledb[5];
B・doubleDB[5];
C.doubleu;
D.doubleu[5];
2&
设charch,str[4],*strp;
则正确的赋值语句是()
A.ch=”MBA”;
B.str=nMBAn;
C.stip=”MBA“;
D.*strp=”MBA”;
29.设typedefchar*POINT;
POINTp,q[3],*r;
,则p、q和1•分别是字符型的()
A.变量、一维数组和指针变量
B.变量、二维数组和指针变量
C.指针变量、一维数组指针和二级指针变量
D.指针变量、一维指针数组和二级指针变量
30.若变量定义时未初始化,则其值不确定的是()
A.静态全局变量B.局部变量
C.静态局部变量D.全局变量
31.设struct{inta;
charb;
}Q,*p=&
Q;
则够谡的表达式是()
B.
(*p).b
D.p->
a
32.在某文件中,若全局变量与局部变量同名,贝!
)()
A.视为同一个变量B.变量作用域不确定
C.不允许D.允许33•设宏定义#defineP(x)x/x
则执行语句printf(u%d\nn,P(4+6));
后的输出结果是()
A.lB.8.5
C.11
D.11.5
34•屈于C语言基本数据类型的是(B)
A.指针型
C.数组型
B.无符号整型
D.结构型
35.C语言的长整型数值在计算机中占用的字节个数是()
A.1
C.3
36.C语言屮,
C.4
B.2
D.4
”\x3d”在内存屮占用的字节数是(B)
D.5
37•设intx;
则执行printf(n%x\nH^xAx);
的结果是()
A.OB.1
C.ffD.ffff
38.对于while语句,错误的说法是()
•••
A.用条件控制循环体的执行次数
B.循环体至少要执行一次
C.循坏体有可能一次也不执行
D.循环体中可以包含若干条语句
39.设inta=9,b=20;
则printf(,'
%d,%d,%d\n,,,a+b,a—的输出结果是()
C、28,10,19
D、30,10,20
A、2&
9,19B、29,9,20
40.执行下列语句
inta=8,b=7,c=6;
if(a<
b)if(b>
c){a=c;
c=b;
}printf("
%d,%d,%d\n"
a,b,c);
后输出的结果是()
A.6,7,7B.6,7,8
C.8,7,6D.8,7,8
41.设staticcharx[]=,,12345,,;
chary[;
那么()
A、x数组的长度等于y数组的长度
B、x数组的长度大于y数组的氏度
C、x数组的长度少于y数组的长度
D、x数组与y数组的存储区域相同
42.设inti,x[3][3]={l,2,3,4,5,6,7,8,9};
则下面语句
for(i=0;
i<
3;
i++)
printfC%d"
x[i][2-i]);
的输出结果是()
A.l47
B.l59
C.357D.369
43.设intb[]={l,2,3,4},y,*p=b;
则执行语句y=*p++;
之后,变量y的值为()
44.设inta,*p;
则语句p=&
中的运算符“&
”的含义是()
A.位与运算B.逻辑与运算
C.取指针内容D.取变量地址
45.若函数能被其它编译单位引用,那么函数定义时的存储类型应选用()
A.autoB.static
C.externD.register
46.下面函数定义有错误的是()
A・fl(xl,x2)
intxl,x2;
intxl;
intx2;
{函数体}
47.C语言屮计算a?
正确的表达是(
C.fl(intx1,x2)D.fl(intx1Jntx2)
A.aA3
C.a**3
4&
下列定义正确的是(
A.anumt={a,b}x;
C.anum{'
+T—'
}x;
B.pow(a,3)
D.power(a,3)
B.enumt{l,2}x;
D.cnumt{a,b}x;
49•设有定义:
unionu{inta[4];
floatb[3]};
charc[16];
}aa;
则printf(/,%d\n"
sizeof(aa));
的输出是()
A.32
B.16
C.12D.8
50.在下列有关宏替换的叙述中,正确的说法是()
A.宏替换占用运行时间
B.宏名有类型
C.带参数的宏替换和函数等价
D.宏替换只是字符替换
51•下列程序的运行结果是()
#defineA5
#defineBA+l
main()
{inta;
a=B;
printf("
%d\n,fa—);
}
A.6B.5C.4D•出错
52.设有如下定义:
structsk
{inta;
floatb;
{data;
int*p;
若要使p指向data中的a成员,正确的赋值语句是()
A.p=&
B・p=data.a;
C・p=&
data.a;
D.*p=data.a;
53.下列四组选项中,均是合法转义字符的选项是()
A.'
n‘\\’B.•Mil1‘\017‘
C.‘\01&
'
\f'
\x4b,C.'
\\0'
\ior'
\xaf
54.设intx=0,*px;
则经过()后,*px的值为0。
A.px=&
x;
B.*px=&
C・px=x;
D.constint*px=&
55.以下程序的输出结果是()
#include<
stdio.h>
voidmain(){
printf(H\n*sl=%15s*M,HchinabejingM);
printf(,,\n*s2=%-5s*,,,"
chi"
);
*sl=chinabejing*
s2=**chi*
c.
B・
*sl=chinabejing
*s2=*chi*
D・
sl=chinabcjing*
*sl=chinabcjing*
56.有关以下函数的哪些说法是正确的()
intadd(intx;
inty)
{intz;
z=x+y;
returnz;
A.此函数能单独运行
C.此函数通过main函数能调用
57.设有如下枚举类型定义:
B.此函数存在语法错误
D.此函数没有语法错误
enumnumber{first=1,second,ten=l,eleven};
枚举项eleven的值为()
A.0B.1C.2
58.下面的程序()
A、输出的是1B、输出的是1和・2
D.4
C、输出的是3和0
D、是死循环
{intx=3;
do{
printf(”%d\n“,x・=2);
}while(!
(--x));
59.以下叙述中不正确的是()
A、预处理命令行都必须以#号开始
B、在程序中凡是以#号开始的语句行都是预处理命令行
C、C程序在执行过程中对预处理命令行进行处理
D、以下是正确的宏定义
#defineIBM_PC(注:
此处的_表示下划线)
60.sizcof(float)是()
A、一个双精度型表达式B、一个整型表达式
C、一种函数调用D、一个不合法的表达式
61.当运行以下程序时,从键盘输入:
AhaMA_Aha<
CR>
(_代表空格,<
代表回车),则下面程序的运行结果是()
#include<
voidmain()
{chars[80],c=,a,;
inti=0;
scanf(”%s“,s);
whilc(s[i]!
='
\0,)
{if(s[i]==c)s[i]=s[i]-32;
i++;
puts(s);
A、ahAMaB、AhAMAC、AhAMaahAD、ahAMaahA
62.以下scanf函数调用语句中对结构体变量成员的不正确引用是()
structpupil
{charname[20];
intsex;
}pup[5],*p;
p=pup;
A、scanf(H%s"
pup[O].name);
B、scanf("
%dn,&
pup[O].agc);
C、scanf(”%d”,&
(p・>
sex));
D、scanf("
%d'
\p->
age);
63.下面程序的输出是()
^defineSUB(X,Y)(X)*Y
{inta=3,b=4;
A、12
C、16D.20
printf(“%d\n"
SUB(a++,b++));
2.填空题
1.一个字符型变量所占内存的字节数是O
2.写出公式丄L+卫对应的C语言表达式。
25x
\/
3.执行语句printf('
%s\nM,MWorld\0Wide\0Webu);
后的输出结果是。
4.设inta,b=5;
则执行表达式a=b-2==3后a的值是。
5.设chars[20]=nMyn;
则执行strcat(s,HSun!
n)后s的内容是。
6.设floatx=23.65;
贝!
J执行语句printfC%d\n"
(int)(x+0.5));
后输出结是。
7.若定义函数char*fun(){-},则该函数的返回值类型是字符指针。
8.设intx=-9,y;
则执行y=x>
=0?
x:
・x;
后y的值是。
9.若函数调用语句为f(a,b,f(a+b,a-b,b));
则函数f的参数个数是。
10.设inta=10;
则执行语句a+=a-=a+a;
后a的值是。
11.在C语言中,预处理功能主要包括:
、文件包含和条件编译。
12.表达式4&
5・3&
5的值是。
13.设intj=5;
则执行语句后j的值是。
14.设inta,b=2,c=3;
执行表达式a=(b>
c)?
(b+l):
(c+2),3
15.设inta[3][2]={2,4,6,8,10};
则*(a[1]+1)的值是。
16.在C语言中,++运算符的结合性是o
17.在C语言中,若函数的形参是整型变量,而对应的实参是整型数,则形实结合的方式是传递。
1&
在C语言中,数组名除名字的功能之外还代表数组的o
19.设enumen{a,b=3,c=4};
则a的序值是。
20.continue语句可以出现在for>
while和语句中。
21.设inty;
执行表达式(y=4)||(y=5)||(y=6)后,y的值是。
22.设charch^A1;
贝0printf(”%c“,(ch>
A'
chv='
Z'
)?
ch+32:
ch);
的值是。
23.结构化程序设计的三种基本结构是:
选择结构、循环结构和o
24.下列程序
intx=3;
do{printf(n%d"
-x);
x);
循环执行的次数是O
25.在C语言屮,一个二维数组可以看成若干个数组。
26.设inta⑶[4]={{1,3,5,7},{2,4,6,8}};
则*(*a+l)的值为。
27.若函数定义为
intdata()
{floatx=9.9;
return(x);
则函数返回的值是。
28.设structstudent
{intno;
charnamc[12];
floatscore[3];
}sl,*p=&
sl;
.
用指针变量p给si的成员no赋值1234的方法是。
29.已有定义inti;
floatx;
为将・10赋给i,410.34赋给x,scanf函数调用语句:
scanf(”%o%e"
&
i,&
数据的输入形式是。
30.右移运算:
inta=7,c=a»
l;
变量c的值是。
31.存储”ch\\\i•“需要个字节。
32.for(a=2;
a==l;
)printf("
%d"
a・・);
循环体执行的次数是。
33.若ch为char*类型,则sizeof(ch)的值为。
34.写出语句printf(n%d,%o,%xn,0x12,12,012);
的输出结果,,
35.表达式98&
8&
31&
6的值为。
36.下列程序段的输出是。
printf(M%o\nH,010«
lAl);
37.表达式〜3&
(2&
1人4)的值为。
38.对于以下递归函数f,调用f(3)的返回值是。
f(intn)
{return((n<
=0)?
n:
f(n-l)+f(n-2));
三、程序分析题
写出程序输出结果。
1.
{inta=l,b=2,c=3;
=c)if(b==c)printf(,,a=%d\nn,a);
elseprintf(”b=%d\n”,b);
c=%d\nn,c);
2.
intf(intn)
{staticintm=5;
return++m+n;
{inti;
i++)printfC%5d"
f(i));
printfC\n〃);
3.
#defineSIZE4
{intn[SIZE]={8,3,4,l};
inti,j;
for(i=O;
ivSIZE;
i++){printf(”%d”,n[i]);
for(j=l;
j<
=n[i];
j++)printf("
*"
printf(M\nM);
4.
intfm(inta,intb)
{if(b==l)returna;
elsereturna+fm(a,b・1);
{
printfC%d\n〃,fm(4,3));
5.
{inta=10,b=20,c=30;
if(a>
b)if(a>
c)printf(”a=%d\n”,a);
elseprintf(nb=%d\nM,b);
printf(”c=%d\n”,c);
6.
SUM(intn)
{if(n==l)return1;
elsereturnn*n+SUM(n-1);
{printf(,'
SUM=%d\n'
,SUM(5));
7.
intfuc(intj)
{staticintk;
return(++k+j);
{intj;
for(j=l;
=3;
j++)printf(n%5dn,fuc(10));
printf(M\nn);
struct
{inta,b;
union{intM,N;
charch[10];
}in;
}Q?
P=&
Q;
{Q.a=3;
Q.b=6;
Q.in.M=(*p).a+(*p).b;
Q.in.N=p->
a*p->
%d,%d,%d\n"
sizeof(Q.in),Q.in.M,Q.in.N);
}
intfun(intx)
inty=0;
staticintz=3;
z++;
++y;
return(x+y+z);
inti,x=2;
2;
printf(n%5d"
fun(x++));
10.
ints=0
for(i=l;
if(s>
50)break;
if(i%2==0)s+=i;
printf(Mi=%d,s=%d\n"
i,s);
11.
intgcd(intmjntn)
{if(m==n)returnm;
elseif(m>
n)returngcd(m,n);
elsereturngcd(m,n-m);
printf(wGcd=%d\n,r,gcd(24,36));
12.
#include<
{inti=0;
charc,s[]=”SABC”;
while(c=s[i])
switch(c)caseA:
i++;
bi・eak;
case'
B‘汁+i;
default:
putchar(c);
putcharC*1);
13.
#includc<
intal=300,a2=400;
voidsubl(intx.inty)
{al=x;
x=y;
y=al;
{inta3=l00,a4=200;
subl(a3,a4);
subl(al,a2);
%d,%d,%d,%d\nn,a1,a2,a3,a4);
14.
structprob
{char*a;
intb;
}x[]={MZhangSan'
1,19,"
LiSi”,21,“WangWu”,20};
voidmain()
{inti,ml,m2;
ml=m2=x[0].