16.17 编程练习

1.开发一个包含您需要使用的预处理器定义的头文件。

2.两个数的调和平均数可用如下方法得到:首先对两数的倒数取平均值,最后再取倒数。使用#define指令定义一个宏“函数”执行这个运算。编写一个简单的程序测试该宏。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

3.极坐标用向量的长度和向量相对于x轴的逆时针转角来描述该向量。直角坐标用向量的x和y坐标来描述该向量(请参见图16.3)。编写程序,它读取向量的长度和角度(以度表示)然后显示x和y坐标。相关等式如下:

阅读 ‧ 电子书库

阅读 ‧ 电子书库

图16.3 直角坐标和极坐标

要完成这个转换,需使用一个函数,该函数接受一个包含极坐标的结构作为参数,返回一个包含直角坐标的结构(也可使用指向结构的指针)。

4.ANSI库这样描述clock()函数:

阅读 ‧ 电子书库

clock_t是在time.h中定义的类型。clock()函数返回处理器时间,其单位依赖于实现(如果无法得到或无法表示处理器时钟,该函数返回值-1)。而同样在time.h中定义的CLOCKS_PER_SEC是每秒的处理器时间单位个数。因此,求出两次调用函数clock()的返回值的差,再用CLOCKS_PER_SEC去除这个差值,结果就是以秒为单位的两次调用之间的时间间隔。在做除法之前,将值的类型指派为double类型,可以将时间精确到小数点以后。编写一个函数,接受一个时间延迟数作为参数,然后运行一个循环,直至这段时间过完。编写一个简单的程序测试该函数。

5.编写一个函数。该函数接受下列参数:一个int数组的名称,数组大小和一个代表选取次数的值。然后函数从数组中随机选择指定数量的元素并打印它们。每个元素最多选择一次(模拟抽奖或挑选陪审成员)。另外,如果您的实现支持time()(在第12章中介绍)或其他类似函数,可在srand()中使用这个函数的输出来初始化随机数生成器rand()。编写一个简单的程序测试该函数。

6.修改程序清单16.15,使其使用由struct names元素(在程序清单后定义)组成的数组,而不是使用double数组。使用较少元素并显式初始化数组为由合适名字组成的数组。

7.下面是使用了可变函数的程序片断:

阅读 ‧ 电子书库

阅读 ‧ 电子书库

new_d_array()函数接受一个int参数和数量可变的double参数。该函数返回一个指向malloc()分配的内存块的指针。int参数指定动态数组中的元素个数;double值用于初始化元素(第一个值赋予第一个元素,依此类推)。提供show_array()和new_d_array()的代码,使程序完整。