练习题9及参考答案

2020-08-21 11:42

练习题9及参考答案

1. 单项选择题

(1)C语言的编译系统对宏命令是 。 A. 在程序运行时进行代换处理的 B. 在程序连接时进行处理的

C. 和源程序中其他C语句同时进行编译的 D. 在对源程序中其他成分正式编译之前进行处理的 【答】D

(2)以下正确的描述为 。

A. 每个C语言程序必须在开头用预处理命令:#include B. 预处理命令必须位于C源程序的首部 C. 在C语言中预处理命令都以“#”开头

D. C语言的预处理命令只能实现宏定义和条件编译的功能 【答】C

(3)以下有关宏替换叙述中,错误的是 。 A. 宏替换不占用运行时间 B. 宏名无类型

C. 宏替换只是字符替换 D. 宏名必须用大写字母表示 【答】D

(4)从下列选项中选择不会引起二义性的宏定义是 。 A. #define POWER(x) x*x B. #define POWER(x) (x)*(x) C. #define POWER(x) (x*x) D. #define POWER(x) ((x)*(x)) 【答】D

(5)若有以下宏定义: #define N 3;

执行语句i=N*3;后,i的值是 。

A. 3 B. 6 C. 9 D. 以上选项都不对 【答】D

(6)若有以下宏定义: #define X 5 #define Y X+1 #define Z Y*X/2

则执行以下printf语句后,输出结果是 。 int a=Y; printf(\printf(\

A. 7,6 B. 12,6 C. 12,5 D. 7,5 【答】D

(7)若有以下宏定义: #define N 2

#define Y(n) ((N+1)*n)

则执行语句“z=2*(N+Y(5));”后的结果是 。

A. 语句有错误 B. z=34 C. z=70 D. z无定值 【答】B

(8)若有以下宏定义: #define MOD(x,y) x%y

则执行以下语句后,输出结果是 。 int z,a=15,b=100; z=MOD(b,a); printf(\

A. 11 B. 10 C. 6 D. 宏定义不合法 【答】B

(9)以下程序的运行结果是 。 #include

#define MAX(A,B) (A)>(B)?(A):(B) #define PRINT(Y) printf(\main() {

int a,b,c,d,t; a=1;b=2;c=3;d=4; t=MAX(a+b,c+d); PRINT(t); }

A. Y=3 B.存在语法错误 C. Y=7 D. Y=0 【答】C

(10)为了求i的3次方,请选择一个表达式 填入,使程序可以正确运行。 #include #define CUBE(x) (x*x*x) main() { int i=4;

printf(\}

A. i*i*i B. x*x*x C. x D. i 【答】D

2. 填空题

(1)以下程序的运行结果是 。 #include

#define PR(a) printf(\main() {

int j,a[]={1,3,5,7,9,11,13,15},*p=a+5; for (j=3;j;j--) switch(j)

{ case 1:

case 2:PR(*p++);break; case 3:PR(*(--p)); } }

【答】a=9 a=9 a=11

(2)以下程序的运行结果是 。 #include #define MOD(x,y) x%y void main() {

int z,a=15,b=100; z=MOD(b,a); printf(\} 【答】10

(3)以下程序的运行结果是 。 #include #define A 3

#define B(a) ((A+1)*a) main() { int x; x=3*(A+B(7)); printf(\}

【答】x=93

(4)以下程序的运行结果是 。 #include

#define JH(x,y) x=x^y;y=x^y;x=x^y main() {

int a=3,b=5,c=7; JH(a,b); JH(b,c); JH(a,c);

printf(\}

【答】a=3,b=7,c=5

3. 编程题

(1)编写一个宏定义AREA(a,b,c),用于求一个边长为a、b和c的三角形的面积。其公式为:

s=(a+b+c)/2

【解】对应的宏如下: #define S(a,b,c) ((a+b+c)/2) #define AREA(a,b,c) \\

(sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c)))

(2)编写一个程序,定义一个判断字符是大写字母的宏,一个判断字符是小写字母的宏以及实现大小写字母相互转换的宏,并将用户输入的一个字符串中的大小写字母互换。

【解】判断为大写字母的宏是isupper(c),判断为小写字母的宏是islower(c),将大写字母转换为小写字母的宏是tolower(c),将小写字母转换为大写字母的宏是toupper(c)。程序如下: /*文件名:exci9_2.cpp*/

VC++6.0

#include

#define isupper(c) ((c)>='A' && (c)<='Z') #define islower(c) ((c)>='a' && (c)<='z')

#define tolower(c) (isupper(c) ? ((c)+('a'-'A')):(c)) #define toupper(c) (islower(c) ? ((c)-('a'-'A')):(c)) main() {

char s[20]; int i;

printf(\输入字符串:\ scanf(\ for (i=0;s[i];i++) if (isupper(s[i])) s[i]=tolower(s[i]); else if (islower(s[i])) s[i]=toupper(s[i]); printf(\转换的结果:%s\\n\}

(3)编写一个程序,用户输入一个字符串,可以原样输出,也可以逆序输出。使用条件编译的方法加以控制。

【解】程序如下: /*文件名:exci9_3.cpp*/

VC++6.0

#include #define CONVERSE main() {

char str[50],*p=str;

printf(\输入一字符串:\ scanf(\ printf(\输出结果:\ #ifndef CONVERSE

printf(\原样输出*/ #else

while (*p++!='\\0'); /*逆序输出*/ p-=2; while (p>=str) printf(\ printf(\ #endif }


练习题9及参考答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:光伏发电技术及应用专业毕业论文实施细则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: