已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第 6 章章 习题解答习题解答 一、选择题一、选择题 1设有如下说明: typedef struct ST long a; int b; NEW; 则下面叙述中正确的是。 A)以上的说明形式非法B)ST 是一个结构变量 C)NEW 是一个结构类型D)NEW 是一个结构变量 解析解析:typedef 可以把任何类型名重新定义成新的名字,形成一个新的类型名。因此本题 的 NEW 是一个结构类型。只有选项 C 正确。 答案答案:C 2以下关于 typedef 的叙述中错误的是。 A)用 typedef 可以增加新类型 B)typedef 只是将己存在的类型用一个新的名字来代表 C)用 typedef 可以为各种类型说明一个新名,但不能用来为变量说明一个新名 D)用 typedef 为类型说明一个新名,通常可以增加程序的可读性 解析解析:通过 typedef 为数据类型定义新名字,但是并非是生成新的数据类型,因此选项 A 是错误的。 答案答案:A 3有以下程序: /* 文件路径名:ex6_1_3main.c */ #include /* 标准输入/输出头文件 */ struct S int n; int a20; ;/* 声明结构类型 */ void f(int a, int n) int i;/* 定义变量 i */ for (i = 0; i /* 标准输入/输出头文件 */ int main(void)/* 主函数 main() */ unsigned char a, b;/* 定义变量 */ a = 7 3;/* 进行按位异或运算 */ b = 4 /* 对 4 进行按位求反运算再与 3 按位与运算 */ printf(“%d %dn“, a, b);/* 输出 a,b */ return 0;/* 返回值 0, 返回操作系统 */ 程序运行后的输出结果是。 A)4 3B)7 3C)7 0D)4 0 解析解析: 7的二进制表示为00000111, 3的二进制表示为00000011, 7与3相异或得00000100, 即十进制数 4,表达式“4/* 定义变量 */ printf(“%dn“, c | c);/* 输出 c | c */ return 0;/* 返回值 0, 返回操作系统 */ 程序运行后的输出结果是。 A)168B)0C)167D)169 解析解析: “|”是按位或操作,当两个变量的对应的二进制位有一个为为 1 时,此位结果值 为 1,否则为 0。对于 c|c,对应位相同,结果仍是 c 的值。因此输出结果应该是 168。 答案答案:A 8有以下程序: /* 文件路径名:ex6_1_8main.c */ #include /* 标准输入/输出头文件 */ int main(void)/* 主函数 main() */ char a = 1, b = 2, c = 3, x;/* 定义变量 */ x = (a b) printf(“%dn“, x);/* 输出 x */ return 0;/* 返回值 0, 返回操作系统 */ 程序的运行结果是。 A)0B)1C)2D)3 解析解析:a 的二进制为 00000001,b 的二进制为 00000010,因此 ab 结果为二进制数 00000011,再与 c(二进制为 00000011)进行 int month; int day; ; 请写出一条定义语句,该语句定义 d 为上述结构变量,并同时为其成员 year, month, day 依次赋初值 2006、10、1:。 解析解析:当需要对一个变量定义为结构体类型时,需要将各成员用“”括号括起来。 答案答案:struct Date d = 2006, 10, 1; 2有以下程序: /* 文件路径名:ex6_2_2main.c */ #include /* 标准输入/输出头文件 */ int main(void)/* 主函数 main() */ unsigned char a = 2, b = 4, c = 5, d;/* 定义变量 */ d = a | b;/* a 与 b 进行按位或运算 */ d /* 按位与复合赋值运算 */ printf(“%dn“, d);/* 输出 d */ return 0;/* 返回值 0, 返回操作系统 */ 程序运行后的输出结果是。 解析解析:将 a 的值转换为二进制 0000 00010,b 转换为二进制 0000 0100,将 a 和 b 进行按 位或运算,因此 d 的二进制为 00000110,c 的二进制为 0000 0101;接下来把 d 和 c 进行按位 与运算得到 0000 0100,并转化为十进制数 4 并输出。 答案答案:4 3设有以下语句: int a = 1, b = 2, c; c = a (b /* 标准输入/输出头文件 */ int main(void)/* 主函数 main() */ int c = 35;/* 定义变量 */ printf(“%dn“, c /* 输出 c/* 返回值 0, 返回操作系统 */ 程序运行后的输出结果是。 解析解析:/* 年 */ int month;/* 月 */ int day;/* 日 */ ; int IsLeapYear(int year)/* 如果 year 是闰年,返回 1,否则返回 0 */ if (year % 4 = 0 /* 或年份能被 400 整除,则为闰年 */ else return 0;/* 否则为平年 */ int Nums(struct Date dt)/* 已知日期,返回该日是该年的第几天 */ switch (dt.month) case 1:/* 1 月份 */ return dt.day; break; case 2:/* 2 月份 */ return 31 + dt.day; break; case 3:/* 3 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + dt.day; else /* 平年 */ return 31 + 28 + dt.day; break; case 4:/* 4 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + 31 + dt.day; else /* 平年 */ return 31 + 28 + 31 + dt.day; break; case 5:/* 5 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + 31 + 30 + dt.day; else /* 平年 */ return 31 + 28 + 31 + 30 + dt.day; break; case 6:/* 6 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + 31 + 30 + 31 + dt.day; else /* 平年 */ return 31 + 28 + 31 + 30 + 31 + dt.day; break; case 7:/* 7 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + 31 + 30 + 31 + 30 + dt.day; else /* 平年 */ return 31 + 28 + 31 + 30 + 31 + 30 + dt.day; break; case 8:/* 8 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + 31 + 30 + 31 + 30 + 31 + dt.day; else /* 平年 */ return 31 + 28 + 31 + 30 + 31 + 30 + 31 + dt.day; break; case 9:/* 9 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + dt.day; else /* 平年 */ return 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + dt.day; break; case 10:/* 10 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + dt.day; else /* 平年 */ return 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + dt.day; break; case 11:/* 11 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + dt.day; else /* 平年 */ return 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + dt.day; break; case 12:/* 12 月份 */ if (IsLeapYear(dt.year) /* 闰年 */ return 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + dt.day; else /* 平年 */ return 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + dt.day; break; default:/* 其它情况 */ return -1;/* 返回-1,表示月份错 */ break; int main(void)/* 主函数 main() */ struct Date dt;/* 年, 月, 日 */ printf(“输入年,月,日:“);/* 输入提示 */ scanf(“%d,%d,%d“, /* 输入 dt */ printf(“%d 年%d 月%d 日是该年的第%d 天n“, dt.year, dt.month, dt.day, Nums(dt);/* 输 出 结 果 */ system(“PAUSE“);/* 调用库函数 system( ),输出系统提示信息 */ return 0;/* 返回值 0, 返回操作系统 */ *2 编写一个函数, 对一个无符号短整型数, 取它的偶数位 (即从左边起的第 2、 4、 6 位)与奇数位(即从左边起的第 1、3、5位)分别组成新的无符号短整数,并通过形参 传回调用函数,并要求编写测试程序。 参考程序参考程序: /* 文件路径名:ex6_3_2main.c */ #include /* 包含库函数 printf()所需要的信息 */ #include /* 包含库函数 system()所需要的信息 */ void Split(unsigned short a, unsigned short *pOdd, unsigned short *pEven)/* a 的奇数位构成*pOdd,偶数 位构成*pEven */ unsigned short i, mask = 1 1;/* 右移 1 位 */ int main(void)/* 主函数 main() */ unsigned short a, odd, even;/* 定义变量 */ printf(“输入一个无符号短整数:“);/* 输入提示 */ scanf(“%hu“, /* 输入 a */ Split(a, /* 把 a 分解成 odd 与 even */ printf(“%hu 的奇数位组成%hu,偶数位组成%hun“, a, odd, even);/* 输出结果 */ system(“PAUSE“);/* 调用库函数 system( ),输出系统提示信息 */ return 0;/* 返回值 0, 返回操作系统 */ *3编写一个函数,设口袋中装有红、黄、兰、白和黑颜色的 5 种小球若干个,每次从 口袋中取出 3 个不同颜色的小球,输出三种颜色的每种组合,要求使用枚举类型,并编写测 试程序。 参考程序参考程序: /* 文件路径名:ex6_3_3main.c */ #include /* 包含库函数 printf()所需要的信息 */ #include /* 包含库函数 system()所需要的信息 */ enum ColorType red, yellow, blue, white, black ; /* 定义颜色枚举类型 */ void PrintColor(enum ColorType color)/* 显示颜色 color */ switch (color) case red:/* 显示红色 */ printf(“%-10s“, “red“); break; case yellow:/* 显示黄色 */ printf(“%-10s“, “yellow“); break; case blue:/* 显示蓝色 */ printf(“%-10s“, “blue“); break; case white:/* 显示白色 */ printf(“%-10s“, “white“); break; case black:/* 显示黑色 */ printf(“%-10s“, “black“); break; int main(void)/* 主函数 main() */ int i, j, k, count = 0;/* 定义变量 */ enum ColorType iColor, jColor, kColor;/* 定义变量 */ for (i = 0; i /* 包含
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生命至上安全第一课件
- 2025 年大学测控技术与仪器(传感器应用技术)试题及答案
- 新版度汛专项方案
- 月嫂证考试试题及答案
- 比亚迪备件经理考试试题及答案
- 水利工程监理案例分析案例分析试题及答案
- 产科急救应急处置预案(3篇)
- 军队营养与食品卫生学之营养与健康培训课件
- 2025年天津低空经济投资发展有限公司实习生招聘3人考试笔试参考题库及答案
- 2025年门诊部半年工作总结(六篇)
- 健康知识讲师培训心得课件
- 工厂水电气安全知识培训课件
- 外来人员滋扰暴力事件应急预案
- 景区灯光展合作合同范本
- 矿山开采沉降管理办法
- 青海会考技术试题及答案
- 检验检测机构资质认定认可内审员培训试题及答案
- 西那卡塞治疗透析患者继发性甲状旁腺功能亢进
- 航空航天材料供应计划及采购质量保证措施
- 2025年高级(三级)健康照护师职业技能鉴定《理论知识》真题卷(后附答案及解析)
- 微燃气轮机燃烧-洞察及研究
评论
0/150
提交评论