收藏 分享(赏)

何钦铭版C语言第3章答案.pdf

上传人:精品资料 文档编号:10254567 上传时间:2019-10-25 格式:PDF 页数:15 大小:551.87KB
下载 相关 举报
何钦铭版C语言第3章答案.pdf_第1页
第1页 / 共15页
何钦铭版C语言第3章答案.pdf_第2页
第2页 / 共15页
何钦铭版C语言第3章答案.pdf_第3页
第3页 / 共15页
何钦铭版C语言第3章答案.pdf_第4页
第4页 / 共15页
何钦铭版C语言第3章答案.pdf_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、45 改变else 和 if 的 配对 例3-12 改写下列 if 语句,使 else 和第1 个 if 配对。 if (x int main(void) int x, y; printf(“Enter x: “ ); scanf(“%d“, if(x0) y=1; else if (x=0) y=0; else y=-1; printf(“sign( %d ) = %dn“,x,y); return 0; 练习 3-3 输 入一 个正 整数 n, 再 输 入 n 个 学生 的成 绩 , 计 算平 均成 绩, 并统 计 所有及 格学 生 的人数 。 解答: # include int main

2、(void) int count, i, n; double grade, total; printf(“Enter n: “); scanf(“%d“, total = 0; count = 0; for(i = 1; i = 60) count+; printf(“Grade average = %.2fn“, total / n); printf(“Number of pass = %dn“, count); return 0; 练习 3-4 输入 15 个字 符, 统计其 中英 文字 母、 空格 或回车 、数 字字 符和 其他 字符的 个 数 。 解答: #include int ma

3、in(void) int i; int blank, digit, letter, other; char c; blank = digit = letter = other = 0; for(i=1;i=15;i+) c = getchar(); if(c=a printf(“Enter year: “); scanf(“%d“, if( (year % 4 = 0 else printf(“It is not a leap yearn “); return 0; 练习 3-6 在例 3-8 程序 中,如 果把 switch 语句 中 所有的 break 都 去掉 ,运 行结果 会改 变 吗

4、?如 果有 变化 ,输 出什 么?为 什么 ? 解答: 如果去 掉所 有 的 break 语 句, 运 行结 果会 改变 , 输 出 price = 0.0 , 因 为不 管 choice 值与 其中某 个常 量表 达式 相等 , 当去 掉 break 语 句时 , 其 后的所 有语 句 段 都将 运行 , 故每 次都 将 执行 到 price=0.0 语句 为止 。 练习 3-7 输 入五 级制 成绩 (A E ) , 输出 相应 的百 分 制成绩 (0 100 ) 区间 , 要 求使 用 switch 语句。 例如 ,输 入 A,输出 90 100 。五 级制 成绩 对应的 百分 制成 绩

5、区 间为 :A (90-100)、 B (80-89)、 C (70-79)、 D (60-69)和 E (0-59)。 解答: #include int main(void) char ch; printf(“Input Grade: “); ch = getchar(); switch(ch) case A: printf(“%c 对应的 百分制 区间 是 90-100n“,ch); break; case B: printf(“%c 对应的 百分制 区间 是 80-89n“,ch); break; case C: printf(“%c 对应的 百分制 区间 是 70-79n“,ch);

6、break; case D: printf(“%c 对应的 百分制 区间 是 60-69n“,ch); break; case E: printf(“%c 对应的 百分制 区间 是 0-59n“,ch); break; default: printf(“Invalid inputn“); return 0; 练习 3-8 查 询水 果的 单价 。 有 4 种水 果, 苹 果 (apples ) 、 梨 (pears ) 、 桔子 (oranges)和葡 萄(grapes ) , 单价 分别 是 3.00 元/ 公斤 ,2.50 元/ 公斤 ,4.10 元/公斤和 10.20 元/ 公斤。 在屏

7、 幕上显 示以 下菜 单 ( 编号 和选项 ) , 用户 可以 连续 查 询水果 的单 价 , 当查 询次 数超 过 5 次 时, 自动退 出查 询; 不 到 5 次 时,用 户可 以选 择退 出。 当用户 输入 编 号 14, 显 示相应 水果 的 单价( 保留 两位 小数 ) ; 输 入 0, 退出 查询 ;输 入其 他编号 ,显 示价 格 为 0。 1 apples 2 pears 3 oranges 4 grapes 0 Exit 解答: #include int main(void) int ri; int choice; float price; for(ri=1; ri=5; r

8、i+) printf(“1 applesn“); printf(“2 pearsn“); printf(“3 orangesn“); printf(“4 grapesn“); printf(“0 Exitn“); scanf(“%d“, if(choice=0) break; else switch(choice) case 1: price=3.00; break; case 2: price=2.50; break; case 3: price=4.10; break; case 4: price=10.20; break; default: price=0; printf(“price=

9、%0.2fn“, price); return 0; 练习 3-9 请 读者 重新 编写 例 3-4 的程 序, 要求 使用 嵌套 的 if - else 语句,并 上 机运行 。 解答: #include int main(void) double x, y; scanf(“%lf“, if (x 15) y = 2.5 * x - 10.5; else if(x= 10 or a = 0 | a = 10 B y=0; else if(x = 0) y = 0; if(x 0) y = 1; else y = -1; else if(x = 0) if(x = 0); if(x 0) y

10、= 1; if(x 0) y = 1 ; else y = 0; else y = -1; else y = -1; 5下 列程 序段 的输 出结 果 是 C 。 int main(void) int a = 2, b = -1,c = 2; if(a b) if(b 0) c = 0; else c+; printf(“%dn“,c); return 0; A 0 B 1 C 2 D 3 6下 列程 序段 的输 出结 果 是 A 。 int main(void) int x = 1,a = 0,b = 0; switch(x) case 0: b+; case 1: a+ case 2: a

11、+;b+; printf(“a=%d,b=%dn“,a,b); return 0; A a=2,b=1 B a=1,b=1 C a=1,b=0 D a=2,b=2 7 在执 行以 下程 序时, 为 使输出 结果 为: t=4 , 则 给 a 和 b 输 入的 值应 满足 的条 件是 C 。 int main(void) int a,b,s,t; scanf(“%d,%d“, s = 1; t = 1; if(a 0) s = s + 1; if(a b) t = s + t; else if(a = b) t = 5; else t = 2 * s; printf(“t=%dn“,t); re

12、turn 0; A ab B aab 二填 空题 1表 示条 件:1010 scanf(“%d“, if(a 50) printf(“%d“,a); if(a 40) printf(“%d“,a); if(a 30) printf(“%d“,a); return 0; 5下 列程 序运 行的 输出 结 果是 9 。 int main(void) int k = 4; switch(c) case a: k = k + 1;break; case b: k = k + 2; case c: k = k + 3; printf(“%dn“,k); return 0; 三程 序设 计题 1 输 入三

13、角 形 的 3 条边 a, b, c , 如 果能 构成 一个 三角 形, 输 出面 积 area 和周 长 perimeter( 保 留 2 位 小数) ;否 则, 输出“These sides do not correspond to a valid triangle“ 。 在一个 三角 形中 ,任 意两 边之和 大于 第三 边。 三角 形面积 计算 公式 : ) )( )( ( c s b s a s s area ,其 中 s = (a+b+c)/2 解答: #include #include int main(void) int a,b,c; double area,s,perime

14、ter; scanf(“%d%d%d“, if(a+bc) s=(a+b+c)*1.0/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“area=%.2f,perimeter=%.2fn“,area,perimeter); else printf(“These sides do not correspond to a valid trianglen“); return 0; 22011 年 开始 实行 新个 人 所得 税 法, 要求 输入 月薪 salary , 输出应交 的个 人所 得税 tax。新 税法方 案如 下: tax = rate * (sala

15、ry-3500)- deduction 当 salary 3500 时,rate = 0 、deduction = 0 当 3500 salary 5000 时,rate = 3% 、deduction = 0 当 5000 salary 8000 时,rate = 10% 、deduction = 105 当 8000 salary 12500 时,rate = 20% 、deduction = 555 当 12500 salary 38500 时,rate = 25% 、deduction = 1005 当 38500 salary 58500 时,rate = 30% 、deductio

16、n = 2755 当 58500 salary 83500 时,rate = 35% 、deduction = 5505 当 83500 salary 时,rate = 45% 、deduction = 13505 解答: #include int main(void) int decution; double rate,salary,tax; printf(“Enter the salary: “); scanf(“%lf“, if(salary=3500) rate=0;decution=0; else if(salary=5000) rate=0.03;decution=0; else

17、if(salary=8000) rate=0.1;decution=105; else if(salary=12500) rate=0.2;decution=555; else if(salary int main(void) int mile,time,cost; scanf(“%d%d“, cost=0; mile=mile+time/5; if(mile int main(void) int mark, n, i, sum; double average; int counta, countb, countc, countd, counte; printf(“Enter n: “); s

18、canf(“%d“, counta= countb = countc = countd = counte =sum=0; for(i=1; i=n; i+) scanf(“%d“, sum=sum+mark; if(mark=90) counta+; else if (mark=80) countb+; else if(mark=70) countc+; else if(mark=60) countd+; else counte+; average=sum*1.0/n; printf(“average=%.1fn“,average); printf(“A: %d, B: %d, C: %d,

19、D: %d, E: %dn“,counta, countb, countc, countd, counte); return 0; 5 输 出 21 世纪 所有 的闰 年。 判 断闰 年的 条件 是: 能被 4 整 除但 不能 被 100 整除 , 或 者能 被 400 整 除。 解答: #include int main(void) int year; for(year=2000; year=2099; year+) if( (year%4=0 return 0; 3.4 实 验指 导教 材参 考答 案 一 、调 试示 例: 略 二 、改 错题 改正下 列程 序中 的错 误, 输入三 角形

20、的 3 条边 a, b, c ,如 果能 构成 一个 三角 形,输 出 面积area 和周 长perimeter ( 保留2 位 小数) ; 否则 , 输 出 “These sides do not correspond to a valid triangle ” 。 ( 源程 序 error03_2.cpp ) 在一个 三角 形中 ,任 意两 边之和 大于 第 3 边。 三角 形面积 计算 公式 : area= ) )( )( ( c s b s a s s 其中s = (a+b+c)/2 输入输 出示 例(运行 2 次) 第一次 运行 : Enter 3 sides of the tria

21、ngle: 5 5 3 area = 7.15; perimeter = 13.00 第二次 运行 : Enter 3 sides of the triangle: 1 4 1 These sides do not correspond to a valid triangle 源程序 (有 错误 的程 序) 1 #include 2 #include 3 int main(void) 4 5 double a,b,c; 6 double area,perimeter,s; 7 8 printf(“Enter 3 sides of the triangle: “); 9 scanf( “%lf%

22、lf%lf“, 10 11 if( a + b c | b + c a | a + c b) 12 s = ( a + b + c ) / 2; 13 area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c ); 14 perimeter = a + b + c; 15 printf(“area = %.2f; perimeter = %.2fn“,area,perimeter); 16 17 else 18 printf(“These sides do not correspond to a valid trianglen“); 19 20 retu

23、rn 0; 21 改错汇总: 错误行 号: 11 正 确 语句: if( a + b c 错误行 号: 16 正 确 语句: 三 、编 程题 1输 入 x ,计 算并 输出 下 列分段 函数 sign(x) 的值 。 10 ( ) 0 0 10 x y sign x x x 输入输 出示 例(运行 3 次) 第一次 运行 : Enter x: 10 sign( 10 ) = 1 第二次 运行 : Enter x: 0 sign( 0 ) = 0 第三次 运行 : Enter x: -98 sign( -98 ) = -1 解答: 参见 3.3.1 节 中的 练习 3-2 2 输 入一 个整 数

24、 x ,判 断 x 能否 被 3 、5 、7 整 除, 并输出 以下 信息 之一 : (1) 能同 时被 3、5 、7 整 数; (2) 能被 其中 两数 整除 ; (3) 能被 其中 一个 数整 除 ; (4) 不能 被 3 、5、7 任一个 数整除 ; 输入输 出示 例(运行 4 次) 第一次 运行 : Enter x: 15 能被其 中两 数整 除 第二次 运行 : Enter x: 14 能被其 中一 个数 整除 第三次 运行 : Enter x: 105 能同时 被 3 、5 、7 整数 第四次 运行 : Enter x: 17 不能 被 3、5、7 任一 个数 整除 解答: #in

25、clude int main(void) int x; printf(“Enter x: “); scanf(“%d“, if(x%3=0 else if (x%3=0 else if(x%3=0|x%5=0|x%7=0); printf(“ 能被其中一 个数 整 除n“); else printf(“ 不能被 3 、5 、7 任一 个 数 整除n“); return 0; 3 输 入五 级制 成绩 (A E ) , 输出 相应 的百 分制 成 绩(0 100 )区 间, 要求 使用 switch 语 句。 五级 制成 绩对 应的 百 分制成 绩区 间为 : A (90 100)、 B (80

26、 89)、 C (70 79)、 D (60 69 )和 E (0 59)。 输入输 出示 例 Input Grade: B B 对 应的 百分 制成 绩区 间 是 80 89 提示 : 程 序应 运行 6 次 , 每次测 试一 种情 况 , 即 分 别输 入 A 、B 、C 、D 、E 和 其他字 符。 解答: 参见 3.3.1 节 中的 练习 3-7 4 查询 水果 的单 价。 有 4 种水果 , 苹果 (apple ) 、 梨 (pear ) 、 橘 子 (orange ) 和 葡萄 (grape), 单价分 别是 3.00 元/ 千 克,2.50 元/ 千 克,4.10 元/ 千 克和

27、 10.20 元/千克 。 在屏 幕上显 示以 下 菜单( 编号 和选 项) ,用 户 可以连 续查 询 水 果的 单价 ,当查 询次 数超 过 5 次 时 ,自动 退出 查 询; 不 到 5 次时, 用户 可 以选择 退出 。 当用 户输 入 编号 1 4 , 显 示相 应 水 果 的单价 (保 留 1 位小数 ) ; 输入 0, 退出 查 询;输 入 0 4 之 外的 其他 编号, 显示 价格 为 0 。 1 apple 2 pear 3 orange 4 grape 0 exit 解答: 参见 3.3.1 节 中的 练习 3-8 52011 年 开始 实行 新个 人 所得税 法, 要求

28、输入 月薪 salary , 输出应交 的个 人所 得税 tax。新 税法方 案如 下: tax = rate * (salary-3500)- deduction 当 salary 3500 时,rate = 0 、deduction = 0 当 3500 salary 5000 时,rate = 3% 、deduction = 0 当 5000 salary 8000 时,rate = 10% 、deduction = 105 当 8000 salary 12500 时,rate = 20% 、deduction = 555 当 12500 salary 38500 时,rate = 25

29、% 、deduction = 1005 当 38500 salary 58500 时,rate = 30% 、deduction = 2755 当 58500 salary 83500 时,rate = 35% 、deduction = 5505 当 83500 salary 时,rate = 45% 、deduction = 13505 输入输 出示 例(运行 5 次) 第一次 运行 : Enter the salary: 3050.5 tax = 0 第二次 运行 : Enter the salary: 4238.9 tax = 22 第三次 运行 : Enter the salary:

30、7328.6 tax = 278 第四次 运行 : Enter the salary: 52547 tax = 11959 第五次 运行 : Enter the salary: 89000 tax = 24970 解答: 参见 3.3.2 节中 程 序 设计题 第 2 题 6输 入一 个正 整数 n, 再 输入 n 个 学生 的百 分制 成 绩,统 计各 等级 成绩 的个 数 。成 绩等 级 分为五 级 ,分 别为 A (90 100)、 B (80 89)、 C (70 79)、 D (60 69)和 E (0 59)。 输入输 出示 例 Enter n: 5 Enter grade 1:

31、77 Enter grade 2: 54 Enter grade 3: 92 Enter grade 4: 73 Enter grade 5: 60 The number of A(90 100):1 The number of B(80 89):0 The number of C(70 79):2 The number of D(60 69):1 The number of E(0 59):1 解答: 参见 3.3.2 程 序设 计 题第 4 题 7 (选 作) 油价 居高 不下 对有车 族来 说真 是个 大负 担!现 在 90 号汽 油 6.95 元/升、93 号汽 油7.44 元/ 升、

32、97 号 汽油 7.93 元/升 。 为吸 引 顾客 , 某 自动 加油 站推 出 了 “ 自助 服务 ” 和“协 助服 务” 两个 服务 等级, 分别 可得 到 5% 和 3% 的折扣 。请 编写 程序 ,输 入顾客 的加 油 量 a, 汽油 品种 b(90 、93 或 97) 和服 务类型 c( m 自助 , e 协助 ) , 计 算并输 出应 付 款(保 留小 数点 后2 位) 。 解答: int main(void) int a,b; char c ; double price,money ; printf(“ 输入加油量: “); scanf(“%d“, printf(“ 输入加 油品 种: “); scanf(“%d“, getchar(); printf(“ 输入服 务方 式: “); c=getchar(); if(b=90) price=6.95; else if(b=93) price=7.44; else price=7.93; if(c=m) money=a*price*0.95; else money=a*price*0.97; printf(“ 应付款: %.2fn“,money); return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报