C语言习题集合.docx
- 文档编号:27641519
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:9
- 大小:18.11KB
C语言习题集合.docx
《C语言习题集合.docx》由会员分享,可在线阅读,更多相关《C语言习题集合.docx(9页珍藏版)》请在冰豆网上搜索。
C语言习题集合
第六章预处理命令
6.1选择题
1.下面叙述中正确的是()。
A.带参数的宏定义中参数是没有类型的
B.宏展开将占用程序的运行时间
C.宏定义命令是C语言中的一种特殊语句
D.使用#inelude命令包含的头文件必须以“.h为后缀
2.下面叙述中正确的是()。
A.宏定义是C语句,所以要在行末加分号
B.可以使用#undef命令来终止宏定义的作用域
C.在进行宏定义时,宏定义不能层层嵌套
D.对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换3.在“文件包含”预处理语句中,当#include后面的文件名用双引号括起时,寻找被包含文件的方式为()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在目录搜索,若找不到,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
4.下面叙述中不正确的是()。
A.函数调用时,先求出实参表达式,然后带入形参。
而使用带参的宏只是进行简单的字符替换
B.函数调用是在程序运行时处理的,分配临时的内存单元。
而宏展开则是在
编译时进行的,在展开时也要分配内存单元,进行值传递
C.对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏没有类型
D.调用函数只可得到一个返回值,而用宏可以设法得到几个结果
5.下面叙述中不正确的是()。
A.使用宏的次数较多时,宏展开后源程序长度增长。
而函数调用不会使源程序变长B.函数调用是在程序运行时处理的,分配临时的内存单元。
而宏展开则是在编译时进行的,在展开时不分配内存单元,不进行值传递
C.宏替换占用编译时间
D.函数调用占用编译时间
6.下面叙述中正确的是()。
A.可以把define和if定义为用户标识符
B.可以把define定义为用户标识符,但不能把if定义为用户标识符
C可以把if定义为用户标识符,但不能把define定义为用户标识符
D.define和if都不能定义为用户标识符
7.下面叙述中正确的是()。
A.#define和printf都是C语句B.#define是C语句,而printf不是是C语句,但#define不是D.#define和printf都不是C语句
8.以下叙述中正确的是()。
人.用#“elude包含的头文件的后缀不可以是“.a”
B.若一些源程序中包含某个头文件;当该头文件有错时,只需对该头文件进行修改,包含此头文件所有源程序不必重新进行编译
C.宏命令行可以看作是一行C语句
D.C编译中的预处理是在编译之前进行的
9.下列程序运行结果为()。
#defineR
#definePI
#defineL2*PI*R
#defineSPI*R*Rmain()
{
printf("L=%fS=%f\n",L,S);
}
A.L=S=
B.==
C.L==
D.=S=
10.以下程序执行的输出结果是()。
#defineMIN(x,y)(x)<(y)?
(x):
(y)main()
{
inti,j,k;
i=10;j=15;
k=10*MIN(i,j);
printf("%d\n",k);
}
11.下列程序执行后的输出结果是()
#defineMA(x)x*(x-1)
main()
{
inta=1,b=2;
printf("%d\n",MA(1+a+b));
}
A.6B.8C.10D.1212.以下程序的输出结果是()。
#defineM(x,y,z)x*y+zmain()
{
inta=1,b=2,c=3;
printf("%d\n",M(a+b,b+c,c+a));
}
A.19B.17C.15D.1213.程序中头文件的内容是()。
#defineN5
#defineM1N*3程序如下:
#include""#defineM2N*2main(){inti;
i=M1+M2;printf("%d\n",i);
}程序编译后运行的输出结果是()
A.10B.20C.2514.请读程序:
#include<>#defineSUB(X,Y)(X)*Ymain()
{
inta=3,b=4;printf("%d",SUB(a++,b++));}上面程序的输出结果是()。
A.12B.15
C.16
D.20
15.执行下面的程序后,a的值是()。
#defineSQR(X)X*Xmain()
{inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);
}
A.10B.1C.9
16.设有以下宏定义#defineN3#defineY(n)((N+1)*n)
则执行语句:
z=2*(N+Y(5+1))后,z的值为()
A.出错B.42C.48D.54
17.以下程序的输出结果是()。
#definef(x)x*x
main()
{D.30
D.0
inta=6,b=2,c;
c=f(a)/f(b);
printf("%d\n",c);
}
A.9B.6C.36D.18
18.有如下程序
#defineN2
#defineMN+1
#defineNUM2*M+1
main()
{
inti;
for(i=1;i<=NUM;i++)
printf("%d\n",i);
}
该程序中的for循环执行的次数是()
A.5B.6C.7D.8
19.执行如下程序后,输出结果为()。
#include<>
#define
N
4+1
#define
M
N*2+N
#define
RE
5*M+M*N
main()
{
printf("%d",RE/2);
}
C.41D.
20.以下程序的输出结果是()。
#defineLETTER0main()
{
charstr[20]="CLanguage",c;
inti;
i=0;
while((c=str[i])!
=0')'
{
i++;
#ifLETTER
if(c>='a'&&c<='-32z;')c=c
#else
if(c>='A'&&c<='Z')c=c+32;#endif
printf("%c",c);
}以上结果都不正确
}
A.CLanguageB.clanguageC.CLANGUAGED.cLANGUAGE6.2填空题
1.以下程序的输出结果是。
#defineMAX(x,y)(x)>(y)?
(x):
(y)
main()
{
inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
2.下面程序的运行结果是。
#defineN10
#defines(x)x*x
#definef(x)(x*x)main()
{
inti1,i2;
i1=1000/s(N);
i2=1000/f(N);
printf("%d,%d\n",i1,i2);
}
3.设有如下宏定义
#defineMYSWAP(z,x,y){z=x;x=y;y=z;}以下程序段通过宏调用实现变量a、b内容交换,请填空floata=5,b=16,c;
MYSWAP(【1】,a,b);4.计算圆的周长、面积和球的体积
【1】
main()
{
floatl,r,s,v;
printf("inputaradus:
");
scanf("%f",【2】);
l=*PI*r;
s=PI*r*r;
v=3*(【3】);
printf("l=%.4f\ns=%.4f\nv=%.4f\n",l,s,v);
}
5.计算圆的周长、面积和球的体积
#definePI
#define【1】L=2*PI*R;【2】;
main()
{
floatr,l,s,v;
printf("inputaradus:
");
scanf("%f",&r);
CIRCLE(r,l,s,v);
printf("r=%.2f\nl=%.2f\ns=%.2f\nv=%.2f\n",【3】);
}
6.3答案及部分解析
一.选择题答案
1.解析:
关于宏的习题,我们要牢记一点:
宏展开只是简单的字符串替换。
宏名无类型,
宏的参数也没有类型,所以选项A)是正确的。
宏展开是在正式编译以前进行的,不会占用程序的运行时间,而会占用编译时间,所以选项B)错误。
规定
所有的编译预处理命令都不是C语言中的语句,因而,编译预处理命令不以分号作为结束符,所以选项C)错误。
头文件习惯上以“.h为后缀,但它只是习惯而不是规定。
所以选项D)错误。
9•解析:
注意双引号中的宏名不被展开,所以输出结果为L=S=而不是二
=。
10.解析:
宏展开就是简单的字符串替换。
语句k=10*MIN(i,j);经过宏展开为k=10*(i)v(j)?
(i):
(j);。
由于*号的优先级要高于<号的优先级,因此要先进行10*(i)的运算;把值带入宏展开式为k=10*10<15?
10:
15;,条件表达式的值为15。
所以选项A)是正确的。
20.解析:
条件编译的命令总共有三种:
一种是#ifdef标识
符…#else…#endif作用是当标识符被定义过,就编译前一段程序,否则编译后一段程序;第二种是#ifdef标识符…#else…#endif作用是当标识符未被定义过,就编译前一段程序,否则编译后一段程序;第三种是#if表达式…#else…#endif
作用是表达式的值为“真”时编译前一段程序,否则编译后一段程序。
本例题中,由于表达式LETTE啲值为0,所以编译if(c>'A&&c 二.填空题答案 1.答案: 7 2.答案: 1000,10 3.答案: 【1】c 4.答案: 【1】#definePI【2】&r【3】PI*r*r*r 5.答案: 【1】CIRCLE(R,L,S,【V)2】【3】r,l,s,v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题 集合