练习与自测
(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)当,
时,编程计算代数式
的值,要求结果用最简分数形式表示。
(15)求一个int值的二进制形式中1的个数。
(16)写一个函数,将一个float类型的值转化为double类型的值。
————————————————————
(1) 后面会讲到,还有一种特殊成员叫做字段(Fields)。
(2) eiπ+1=0。
(3) 本书将把二进制数的最低位称为b0,由低到高依次称为b0、bl、b2……。
(4) CHAR_BIT为limits.h中所规定的char类型的二进制位数,即8。