当前位置:嗨网首页>书籍在线阅读

41-复习题

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

16.17 复习题

1.下面的几组代码由一个或多个宏组成,其后是使用宏的源代码。在每种情况下代码的结果是什么?这些代码是否是有效代码?(假设其中的变量已声明)

a.

#define FPM 5280 /*每英里的英尺数*/
dist = FPM * miles;

b.

#define FEET 4
#define POD FEET + FEET
plort = FEET * POD;

c.

#define SIX = 6;
nex = SIX;

d.

#define NEW(X) X + 5
y = NEW(y);
berg = NEW(berg) * lob;
est = NEW(berg) / NEW(y);
nilp = lob * NEW(-berg);

2.修改复习题1中 d 部分的定义,使其更可靠。

3.定义一个宏函数,返回两值中的较小值。

4.定义 EVEN_GT(X, Y) 宏,如果 X 为偶数且大于 Y ,该宏返回 1

5.定义一个宏函数,打印两个表达式及其值。例如,若参数为 3+44*12 ,则打印:

3+4 is 7 and 4*12 is 48

6.创建 #define 指令完成下面的任务。

a.创建一个值为25的命名常量。

b. SPACE 表示空格字符。

c. PS() 代表打印空格字符。

d. BIG(X) 代表 X 的值加 3

e. SUMSQ(X, Y) 代表 XY 的平方和。

7.定义一个宏,以下面的格式打印名称、值和int类型变量的地址:

name: fop; value: 23; address: ff464016

8.假设在测试程序时要暂时跳过一块代码,如何在不移除这块代码的前提下完成这项任务?

9.编写一段代码,如果定义了 PR_DATE 宏,则打印预处理的日期。

10.内联函数部分讨论了3种不同版本的 square() 函数。从行为方面看,这3种版本的函数有何不同?

11.创建一个使用泛型选择表达式的宏,如果宏参数是 _Bool 类型,对 "boolean" 求值,否则对 "not boolean" 求值。

12.下面的程序有什么错误?

#include <stdio.h>
int main(int argc, char argv[])
{
   printf("The square root of %f is %f\n", argv[1],sqrt(argv[1]) );
}

13.假设 scores 是内含 1000int 类型元素的数组,要按降序排序该数组中的值。假设你使用 qsort()comp() 比较函数。

a.如何正确调用 qsort()

b.如何正确定义 comp()

14.假设 data1 是内含100个 double 类型元素的数组, data2 是内含300个 double 类型元素的数组。

a.编写 memcpy() 的函数调用,把 data2 中的前 100 个元素拷贝到 data1 中。

b.编写 memcpy() 的函数调用,把 data2 中的后 100 个元素拷贝到 data1 中。