C复习资料1.docx
《C复习资料1.docx》由会员分享,可在线阅读,更多相关《C复习资料1.docx(41页珍藏版)》请在冰豆网上搜索。
![C复习资料1.docx](https://file1.bdocx.com/fileroot1/2023-1/27/51dd9155-3d45-421c-9e08-f2a550d94c91/51dd9155-3d45-421c-9e08-f2a550d94c911.gif)
C复习资料1
C复习资料:
1、下列叙述中错误的是(A)。
A.一个C语言程序只能实现一种算法
B.C程序可以由多个程序文件组成
C.C程序可以由一个或多个函数组成
D.一个C函数可以单独作为一个C程序文件存在
2、以下叙述中正确的是(C)。
A.C程序的基本组成单位是语句
B.C程序中的每一行只能写一条语句
C.简单C语句必须以分号结束
D.C语句必须在一行内写完
3、以下叙述中正确的是(C)。
A.C程序中的注释只能出现在程序的开始位置和语句的后面
B.C程序书写格式严格,要求一行内只能写一个语句
C.C程序书写格式自由,一个语句可以写在多行上
D.用C语言编写的程序只能放在一个程序文件中
4、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B)。
A.大写字母 B.连接符
C.数字字符 D.下划线
5、下列定义变量的语句中错误的是(D)。
A.int_int; B.doubleint_;
C.charFor; D.floatUSS
6、以下选项中不能作为C语言合法常量的是(A)。
A.´cd´B。
0.1c+6
C.〞\a〞D.´\011´
7、以下选项中不属于字符常量的是(B)。
A.'C'B."C"C.'\xCC0'D.'\072'
8、下列常量哪个是不合法的(B)。
A.0x4d00B.‘BASIC’
C.’\\’D.“/045”
9、以下4组用户定义标识符中,全部合法的一组是(A)。
A._main B.If C.txt D.int
enclude -max REAL k_2
sin turbo 3COM _001
10、以下选项中不属于字符常量的是(B)。
A.'C'B."C"C.'\xCC'D.'\072'
11、下列变量名中哪个是不合法(C)。
A.Turbo_CB.vcC.intD._2ab
12、设变量已正确定义并赋值,以下正确的表达式是(B)。
A.b=3++B.x=2,++y
C.a=14%3.3D.x=y+3=2
13、以下定义语句中正确的是(D)。
A.inta=b=0;B.charA=65+1,b='b';
C.floata=1,*b=&a,*c=&b;
D.doublea=0.0,b=1.1;
14、以下选项中正确的定义语句是(C)。
A.doublea;b;B.doublea=b=7
C.doublea=7,b=7;D.double,a,b;
15、以下不能正确表示代数式2ab/cd的C语言表达式是(D)。
A.2*a*b/c/dB.a*b/c/d*2
C.a/c/d*b*2D.2*a*b/c*d
16、若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是(A)。
A.++x,y=x-- B.x+1=y
C.x=x+10=x+y D.double(x)/10
17、以下关于逻辑运算符两侧运算对象的叙述中正确的是(D)。
A.只能是整数0或1
B.只能是整数0或非0的整数
C.可以是结构体类型的数据
D.可是任意合法的表达式
18、若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?
(x++):
(y++)中的条件表达式(x-y)等价的是(C)。
A.(x-y>0) B.(x-y<0)
C.(x-y<║x-y>0) D.(x-y==0)
19、设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A)。
A.k++ B.k+=1 C.++k D.k+1
20、若以下选项中的变量已正确定义,则正确的赋值语句是(C)。
A.x1=26.8%3 B.1+2=x2
C.x3=0x12 D.x4=1+2=3;
21、执行以下程序段后,w的值为(C)。
intw=´A´,x=14,y=15;
w=((x||y)&&(w<´a´));
A.-1B.NULLC.1D.0
22、当变量c的值不为2、4、6时,值也为“真”的表达式是(B)。
A.(c==2)‖(c==4)‖(c==6)
B.(c>=2&&c<=6)‖(c!
=3)‖(c!
=5)
C.(c>=2&&c<=6)&&!
(c%2)
D.(c>=2&&c<=6)&&(c%2!
=1)
23、 设有以下定义
int a=0;
double b=1.25;
char c=’A’;
#define d 2
则下面语句中错误的是(D)。
A.a++; B.b++ C.c++; D.d++;
24、若有以下函数首部
intfun(doublex[10],int*n)则下面针对此函数声母语句中正确的是(B)。
A.intfun(doublex,int*n);
B.intfun(double,int);
C.intfun(double*x,intn);
D.intfun(double*,int*);
25、若程序中定义了以下函数
double myadd(double a,double b)
{ return (a+b);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(A)。
A.double myadd(double a,b);
B.double myadd(double,double);
C.double myadd(double b,double a);
D.double myadd(double x,double y);
26、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是(C)。
A.abs(x-y)<10 B.x-y>-10&& x-y<10
C.(x-y)<-10||!
(y-x)>10 D.(x-y)*(x-y)<100
27、已知intx=10,y=20,z=30;if(x>y)z=x;x=y;y=z;执行后x,y,z的值是(B)。
A.x=10,y=20,z=30B.x=20,y=30,z=30
C.x=20,y=30,z=10D.x=20,y=30,z=20
28、对for(表达式1;;表达式3)可理解为(B)。
A.for(表达式1;0;表达式3)
B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
29、以下叙述中正确的是(C)。
A.break语句只能用于switch语句体中
B.continue语句的作用是:
使程序的执行流程跳出包含它的所有循环
C.break语句只能用在循环体内和switch语句体内
D.在循环体内使用break语句和continue语句的作用相同
30、下列叙述中正确的是(D)。
A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中,不一定使用break语句
31、在嵌套使用if语句时,C语言规定else总是(C)。
A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对
D.和之前的第一个if配对
32、若i为整型变量,则以下循环执行次数是(B)。
for(i=2;i==0;)printf("%d",i--);
A.无限次B.0次C.1次D.2次
33、以下能正确计算1×2×3×...×10的程序段是(C)。
A.do{i=1;s=1;B.do{i=1;s=0;
s=s*i;s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
C.i=1;s=1;D.i=1;s=0;
do{s=s*i;do{s=s*i;
i++;i++;
}while(i<=10);}while(i<=10);
34、若有宏定义:
#definef(x)x*x,则表达式f(3+3)/f(3+3)的值为(B)。
A.1B.25C.3D.4
35、下面的函数调用语句中func函数的实参个数是(A)。
func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));
A.3B.4C.5D.8
36、以下叙述中错误的是(B)。
A.用户自定义的函数中可以没有return语句
B.用户自定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C.用户自定义的函数中若没有return语句,则应当定义函数为void类型
D.函数的return语句中可以没有表达式
37、以下关于宏的叙述中正确的是(C)。
A.宏名必须用大写字母表示
B.宏定义必须位于源程序中所有语句之前
C.宏替换没有数据类型限制
D.宏调用比函数调用耗费时间
38、以下能正确定义一维数组的选项是(B)。
A.inta[5]={0,1,2,3,4,5};
B.chara[]={0,1,2,3,4,5};
C.chara={'A','B','C'};
D.inta[5]="0123";
39、若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是(D)。
A.#defineN10Inta[N]
B.#definen5Inta[2*n]
C.inta[5+5]
D.intn=10,a[n]
40、以下能正确定义二维数组的是(C)。
A.int a[][3]; B.int a[][3]=2{2*3};
C.int a[2][3]={0};
D.int a[2][3]={{1},{2},{3,4}};
41、若有以下定义语句:
intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是(C)。
A.m[i]B.m[2*2]C.m[m[0]]D.m[m[i]]
42、若有定义语句:
doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是(B)。
A.*pB.x[5]C.*(p+1)D.*x
43、若有定义语句:
chars[10]=〞1234567\0\0〞;,则strlen(s)的值是(A)
A.7B.8C.9D.10
44、有说明inta[][3]={1,2,3,4,5,6,7,8,9,10};则数组a的第一维的大小是(C)。
A.1B.3C.4D.不能确定
45、若有定义:
inta[2][3];,以下选项中对a数组元素正确引用的是(D)。
A.a[2][!
1]B.a[2][3]
C.a[0][3]D.a[1>2][!
1]
46、以下叙述中错误的是(D)。
A.在程序中凡是以“#”开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C.#defineMAX是合法的宏定义命令行
D.C程序对预处理命令行的处理是在程序执行的过程中进行的
47、设有定义语句int(*f)(int);,则以下叙述正确的是(B)。
A.f是基类型为int的指针变量
B.f是指向函数的指针变量,该函数具有一个int类型的形参
C.f是指向int类型一维数组的指针变量
D.f是函数名,该函数的返回值是基类型为int类型的地址
48、判断字符串s1是否大于字符串s2,应当使用(D)。
A.if(s1>s2)B.if(strcmp(s1,s2))
C.if(strcmp(s2,s1)>0)
D.if(strcmp(s1,s2)>0)
49、判断字符串a和b是否相等,应当使用(C)。
A.if(a==b) B.if(a=b)
C.if(strcmp(a,b)) D.if(strcpy(a,b))
50、设已有定义:
floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是(D)。
A.float*p=1024; B.int*p=(floatx);
C.floatp=&x; D.float*P=&x;
51、若已有说明float*p,m=3.14;要让p指向m,则正确的赋值语句是(B)。
A.p=m;B.p=&m;
C.*p=m;D.*p=&m;
52、若有定义:
int*p[4];则标识符p(B)。
A.是一个指向整型变量的指针
B.是一个指针数组名
C.是一个指针,它指向一个含有四个元素的一维数组D.说明不合法
53、定义结构如下:
structstu
{longsno;
charname[10];
inta;
floatb;};
则sizeof(structstu)的值为(B)。
A.4B.20C.22D.24
54、以下对结构变量stu1中成员age的非法引用是(B)。
structstudent
{intage;
intnum;
}stu1,*p;p=&stu1;
A.stu1.ageB.p.age
C.p->ageD.(*p).age
55、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是(A)。
A.auto和registerB.extern和registerC.auto和staticD.static和register
56、设有定义语句:
charc1=32,c2=32;则以下表达式中值为零的是(A)。
A.c1^c2 B.c1&c2
C.~c2D.c1|c2
57、C语言中可以处理的文件类型是(B)。
A.文本文件和数据文件
B.文本文件和二进制文件
C.数据文件和二进制文件
D.任何类型文件
58、若要以写的方式创建新打开文本文件,则在fopen函数中使用的打开方式是(A)。
A."w"B."rb"C."rb+"D."w+"
59、若有定义:
int a=1,b=2,c=3;则表达式 (a
b:
a)>c?
c:
(a
b:
a)的值为(C)。
A.0B.1 C.2D.3
60、若有定义:
int a,b;则表达式(a=3,b=3,b+=a+=3)的值是(C)。
A.3B.6 C.9D.12
二、阅读程序题,写出运行结果。
1、main()
{inta=2;
if(a>0)
a-=2;
else
if(a==0)
a-=2;
else
a+=10;
printf("%d\n",a);
}
______0____。
2、main()
{intx=6,y=2;
if(x>5)
if(x>0)
printf("%d",x++);
else
printf("%d",x--);
printf("%d",x);
}
________6__。
3、#include
main()
{intx=1,y=2,z=3;
if(x>y)
if(y>z)printf(〞%d〞,++z);
elseprintf(〞%d〞,++y);
printf(〞%d\n〞,x++);
}
________1___。
4、main()
{intx,y,z;
x=y=z=0;
++x&&++y||++z;
printf("%d%d%d\n",x,y,z);
}
______110___________。
5、main()
{intx=2;
switch(x==2)
{case1:
printf("*");break;
case2:
printf("%");break;
}
}
______*___________。
6、有以下程序
#include
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
_____a=2,b=1___________。
7、main()
{inti;
for(i=0;i<3;i++)
switch(i)
{case0:
printf(“%d”,i++);
case1:
printf(“%d”,++i);
default:
printf(“%d”,i);
}
}
____022222_______。
8、main()
{intk=3,n=0;
do
{switch(k)
{case1:
n+=1;break;
case2:
n+=2;k--;break;
default:
n=0;k--;
}
printf("%d",n);
}while(k>0&&n<3);
}
______023______________。
10、 main()
{inti;
for(I=1;I<=40;I++)
{if(I++%5=0)
if(++I%8=0)printf("%d",i)
}
printf("\n")
}
______32____________。
11、main()
{inti=1,s=3;
while(s<15)
{s+=i++;
if(s%7==0)
continue;
else
i++;
}
printf("%d\n",i);
}
__8______________。
12、#include
main()
{intx=8;
for(;x>0;x--)
{if(x%3){printf(“%d,”,x--);
continue;}
printf(“%d,”,--x);
}
}
8,5,4,2。
13、main()
{int i,j;
for(i=1;i<3;i++)
{ for(j=i;j<3;j++)
printf("%d*%d=%d ",i,j,i*j);
printf("\n");
}
}
_1*1=11*2=22*2=4。
14、main()(没改)
{inti,j;
for(i=1;i<=3;i++)
{for(j=1;j<=3;j++)
printf("%d",i+j);
printf("\n");
}234
}345
_456_________。
15、main()
{
intaa[3][3]={{1,2,3},{1,2,3},{1,2,3}};
inti,k=0,s=0;
for(i=0;i<3;i++)
{s+=aa[i][k];
++k;
}
printf("%d\n",s);
}
______6_。
16、fun(inta,intb)
{return(a
a:
b);
}
main()
{intx=5,y=7,z=6,r;
r=fun(z,fun(x,y));
printf("%d\n",r);
}
________5______。
17、intx;
voidplusone()
{x++;}
main()
{x=1;
plusone();
plusone();
printf("x=%d\n",x);
}
x=3。
18、intf()
{intsum=0;
staticintx=1;
returnsum+=x++;
}
main()
{inti;
for(i=1;i<=3;i++)
printf("%d",f());
}
123。
19、fun(intx,inty)
{staticintm=0,I=2;
I+=m+1;m=I+x+y;returnm;
}
main()
{intj=1,m=1,k;
k=fun(j,m);printf("%d",k);
k=fun(j,m);printf("%d\n",k)
}
5,11。
20、#include
intf(intx)
{inty;
if(x==0||x==1)return(3);
y=x*x-f(x-2);
returny;
}
main()
{intz;
z=f(3);printf(“%d\n”,z);
}
______6___________。
21、intfun(intx)
{if(x>0)
returnx+fun(x-1);
return1;
}
main()
{printf("%d\n",fun(5));}
_______15_____。
22、#include
voidrecur(intx);
voidmain()
{recur(3);
}
voidrecur(intn)
{if(n<=0)
return;
printf("%d",n);
recur(n-1);
printf("%d",n);
}
_______321123________。
24、#include
intfun(inta,intb)
{if(b==0)returna;
elsereturn(fun(-a,-b));
}
main()
{printf(〞%d\n〞,fun(4,2));
}
2。
25、main()
{inta[4]={1,2,3,4};inti;
for(i=0;i<4;i++)
a[i]+=i;
for(i=3;i>=0;i--)
printf("%d",a[i]);