C语言程序设计(何欣铭、颜晖_第2版)课后习题答案.docx





《C语言程序设计(何欣铭、颜晖_第2版)课后习题答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计(何欣铭、颜晖_第2版)课后习题答案.docx(106页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、39C语言程序的调试、运行步骤修改程序,观察语法错误、逻辑错误及改正方法。 语法错误:可以删除一个分号,使编编辑编译连接运行译出现错误提示,改正之,再编译。类比写文章有错别字。开始源程序.c / .cpp语法错误目标程序.obj连接错误可执行程序.exe运行错误结果 逻 辑 错 误 : 将 sum=sum+i 改 为sum=sum-i,编译、连接、运行,发现运行结果不符合题目要求。找出错误(调试),改正之,再编译、连接、运行,看结果。类比写文章词不达意。1.3 习题参考答案1对 C语言来说,下列标识符中哪些是合法的,哪些是不合法的?total,_debug,Large&Tall,Counter
2、1,begin_解答:Large&Tall不合法,其余都合法。2改写本章 1.4 节中的流程图 1.2,求 1100 中能被 6 整除的所有整数的和。解答:sum = 0i = 1真i = 100?真假假i能被6整除?sum = sum + ii = i + 1打印 sum图 1.1 “求 1100 中能被 6 整除的所有整数的和”的流程图113改写本章 1.4 节中的程序,求 1100 中能被 6 整除的所有整数的和,并在编程环境中验证该程序的运行结果。解答:#includeintmain(void)inti,sum=0;for(i=1;i=100;i+)if(i%6= 0) sum=sum
3、+i;printf(%d,sum);return0;运行结果:8164对于给定的整数 n(n1),请设计一个流程图判别 n 是否为一个素数(只能被 1 和自己整除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构与循环结构。解答: 在流程图中,分支结构和循环结构如图 1.2 所示,自上而下的 2 个实线框和 2 个虚线组成了顺序结构。输入ni = 2假in/2?假假打印n不是素数循环结构分支结构#include int main(void )printf( An);printf(A An);printf( An);return 0;1462函数的概念n C语言中有两种类型函数简单总结本节
4、内容。使学生了解自定义函数编程结构,能够模仿编程即可。标准库函数自定义函数n 函数可以做到一次定义、多次调用n 使用自定义函数的程序框架double fact(int n);int main(void)/* 声明自定义函数,以分号结束 */result = fact(i);/* 调用自定义函数fact(i)计算i! */* 定义求 n! 的函数 */2.3 练习与习题参考答案2.3.1 练习参考答案2-1 编写程序,在屏幕上显示一个短句“Programming in C is fun!”。解答:#include int main(void)printf(Programming in C is
5、fun!n);return 0;2-2 下列语句的运行结果是什么?与例 2-2 的运行结果有何不同?为什么?printf(Programming is fun. And Programming in C is even more fun!n);解答:运行结果:Programming is fun. And Programming in C is even more fun!例 2-2 的运行结果分 2 行显示。原因在于,例 2-2 中在每条输出语句的结尾都采用了n换行。2-3 编写程序,在屏幕上显示如下图案。*解答:int main(void)printf(* * * *n * * *n *
6、*n*n);return 0;182-4 编写程序,求华氏温度 150F 对应的摄氏温度(计算公式同例 2-3)。解答:#include int main(void)int celsius, fahr;fahr = 150;celsius = 5 * (fahr 32) / 9;printf(fahr = %d, celsius = %dn, fahr, celsius);return 0;2-5 算 术 表 达 式 5*(fahr-32)/9 能 改 写 成 5(fahr-32)/9 吗 ? 为 什 么 ? 如 果 将 其 改 写 为5/9*(fahr-32),会影响运算结果吗?解答:5(f
7、ahr-32)/9 不是合法的 C 表达式,因为不能省略运算符*;5/9*(fahr-32)的值为 0。2-6 一个物体从 100 米的高空自由落下,编写程序,求它在前 3 秒内下落的垂直距离。设重力加速度为 10m/s2。解答:#include int main(void)double height;height = 0.5 * 10 * 3 * 3;printf(height = %.2fn, height);return 0;2-7 输入提示和输入语句的顺序应该如何安排?例 2-5 中,scanf(%d%d%lf, &money, &year,&rate) 能 改 写 为 scanf(%
8、d%lf%d, &money, &year, &rate) 吗 ? 为 什 么 ? 能 改 写 为scanf(%d%lf%d, &money, &rate, &year) 吗?如果可以,其对应的输入数据是什么?解答:输入提示在前,输入语句在后。不能改写为 scanf(%d%lf%d, &money, &year, &rate),因为%lf 与整型变量 money 不匹配,%d 与浮点型变量 rate 不匹配。与 scanf(%d%lf%d, &money, &rate, &year)对应的输入数据为:1000 0.025 32-8 编写程序,输入华氏温度,输出对应的摄氏温度,计算公式同例 2-
9、3。解答:#include int main(void)int celsius, fahr;19scanf(%d, &fahr);celsius = 5 * (fahr - 32) / 9;printf(celsius = %dn, celsius);return 0;2-9 编写程序,输入 3 个整数,计算并输出它们的平均值。解答:#include int main(void)int a, b, c;double average;scanf(%d%d%d, &a, &b, &c);average = (a + b + c) * 1.0 / 3;printf(average = %.2fn,
10、average);return 0;2-10 编写程序,输入 x,计算并输出下列分段函数 f(x)的值(保留 3 位小数)。 1y = f ( x) = x 0x 0x = 0解答:#include int main(void)double x, y;scanf(%lf, &x);if(x != 0)y = 1 / x;elsey = 0;printf(f(%.2f) = %.3fn, x, y);return 0;2-11 编写程序,输入 x,计算并输出下列分段函数 f(x)的值(保留 2 位小数),请调用 sqrt函数求平方根,调用 pow 函数求幂。x 0y = f (x) = x解答:
11、#include 20x + 2x + 5 1x x 0#include int main(void)double x, y;scanf(%lf, &x);if(x = 0)y = sqrt(x);elsey = pow(x,5) + 2 * x + 1 / x;printf(f(%.2f) = %.2fn, x, y);return 0;2-12 编写程序,输入 2 个整数 lower 和 upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是lower, upper,每次增加 2F,计算公式同例 2-7。解答:#include int main(void)int lower, upp
12、er;double celsius, fahr;scanf(%d%d, &lower, &upper);printf(fahr celsiusn);for(fahr = lower; fahr = upper; fahr = fahr + 2)celsius = 5 * (fahr - 32.0)/9 ;printf(%3.0f %6.1fn, fahr, celsius);return 0;n2-13 编写程序,输入一个正整数 n,求 i =1 。解答:#include int main(void)int i, n;double sum;scanf(%d, &n);sum = 0;for(i
13、 = 1; i = n; i+)sum = sum + 1.0 / i;printf(sum = %.6fn, sum);211ireturn 0;1 13 5解答:#include int main(void)int i, n;double sum;scanf(%d, &n);sum = 0;for(i = 1; i = n; i+)sum = sum + 1.0/(2*i-1);printf(sum = %.6fn, sum);return 0;1 1 1 1 14 7 10 13 16解答:#include int main(void)int flag, i, n, denominato
14、r;double item, sum;scanf(%d, &n);sum = 0;flag = 1;denominator = 1;for(i = 1; i = n; i+)item = flag * 1.0 / denominator;sum = sum + item;flag = -flag;denominator = denominator + 3;printf(sum = %.3fn, sum);return 0;2-16 编写程序,输入两个正整数 m 和 n,计算 m! + n!。解答:#include stdio.h222-14 编写程序,输入一个正整数 n,计算1 .+ + +
15、的前 n 项之和。2-15 编写程序,输入一个正整数 n,计算1 .- + - + - + 的前 n 项之和。int main(void)int i, m, n;double fm, fn;scanf(%d%d, &m, &n);fm = 1;for(i = 1; i = m; i+)fm = fm * i;fn = 1;for (i = 1; i = n; i+)fn = fn * i;printf(%d! + %d! = %.0fn, m, n, fm+fn);return 0;2-17 执行下列程序段后,sum 的值是。for (i = 1; i = 10; i+)sum = 0;sum
16、 = sum + i;解答:sum 的值是 10。2-18 输入一个正整数 n,生成一张 3 的乘方表,输出 30 到 3n 的值,可以调用幂函数计算 3的乘方。解答:#include #include int main(void)int i, n;double mypow;scanf(%d, &n);for(i = 0; i = n; i+)mypow = pow(3, i);printf(pow(3,%d) = %.0fn, i, mypow);return 0;2-19 输入一个正整数 n,生成一张阶乘表,输出 1!到 n!的值。要求定义和调用函数 fact(n)计算 n!,函数类型是
17、double。解答:#include int main(void)23int i, n;double myfact;double fact(int n);scanf(%d, &n);for(i = 1; i = n; i+)myfact = fact(i);printf(%d! = %.0fn, i, myfact);return 0;double fact(int n)int i;double product;product = 1;for(i = 1;i = n; i+)product = product * i;return product;2-20 根据下列公式可以算出从 n 个不同元
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 颜晖 课后 习题 答案

限制150内