C语言习题集合.docx

上传人:b****7 文档编号:15338151 上传时间:2023-07-03 格式:DOCX 页数:9 大小:18.11KB
下载 相关 举报
C语言习题集合.docx_第1页
第1页 / 共9页
C语言习题集合.docx_第2页
第2页 / 共9页
C语言习题集合.docx_第3页
第3页 / 共9页
C语言习题集合.docx_第4页
第4页 / 共9页
C语言习题集合.docx_第5页
第5页 / 共9页
C语言习题集合.docx_第6页
第6页 / 共9页
C语言习题集合.docx_第7页
第7页 / 共9页
C语言习题集合.docx_第8页
第8页 / 共9页
C语言习题集合.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言习题集合.docx

《C语言习题集合.docx》由会员分享,可在线阅读,更多相关《C语言习题集合.docx(9页珍藏版)》请在冰点文库上搜索。

C语言习题集合.docx

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模板 > 自然景观

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2