练习与自测

(1)编写一个求两个分数和的函数,要求“分数”的数据类型使用结构体类型实现,并自行编写驱动程序测试。

(2)编写函数,判断两线段是否相交。

(3)输入1950年~2050年期间的任一日期,输出第二天是哪天。

(4)输入3对整数表示平面坐标系上的3个点,判断它们能否构成一个三角形。

(5)编写一个求两个分数商的函数,要求“分数”的数据类型使用结构体类型实现,并自行编写驱动程序测试。

(6)编写一个可判断两个分数大小的函数。

(7)写一个函数,要求函数返回把一个int类型的二进制数的奇数位和偶数位互换的int值。(b0位与b1交换,b2位与b3交换……)

(8)自己定义一个复数类型,编写能实现复数四则运算的函数,并自行编写驱动程序测试。

(9)54张卡片,依次排成一列,初始状态皆为正面向上。第1遍,把各张卡片各翻一次使之反面朝上,第2遍把第2、4……54张卡片各翻一次,第3遍把第3、6……54张卡片各翻一次……最后一遍把第54张卡片翻一次。问最后哪些卡片正面向上,哪些反面向上?要求代码用紧凑的方式存储数据并通过位运算实现。

(10)分子为1的分数称为埃及分数。现输入一真分数,请将该分数分解为埃及分数。例如:8/11=1/2+1/5+1/55+1/100。

(11)编写函数返回一个int数据循环左移n的结果。(所谓循环左移是指将移出的各位写在右面移出的空位中)

(12)在A、B、C、D、E、F中,在满足下面条件的前提下选出若干个。

①A、B至少选一个。

②A、D不能同时选。

③A、E和F中要选两个。

④B、C要么都选,要么都不选。

⑤C、D至少选一个。

⑥若不选D,则也不可以选E。

问都有哪些选择方案?选中最多的是哪种方案?要求用位运算或位段求解。

(13)1950~2050年间的闰年有如下特点:能被4整除,但是在年份能被100整除的情况下,那么还必须能被400整除才是闰年。编写程序,输入2个1950~2050年间的日期,求两个日期相差多少天。

(14)当练习与自测 - 图1练习与自测 - 图2时,编程计算代数式

练习与自测 - 图3的值,要求结果用最简分数形式表示。

(15)求一个int值的二进制形式中1的个数。

(16)写一个函数,将一个float类型的值转化为double类型的值。

————————————————————

(1) 后面会讲到,还有一种特殊成员叫做字段(Fields)。

(2) e+1=0。

(3) 本书将把二进制数的最低位称为b0,由低到高依次称为b0、bl、b2……。

(4) CHAR_BIT为limits.h中所规定的char类型的二进制位数,即8。