logo资料库

c语言程序设计_第3版_何钦铭_课后答案.pdf

第1页 / 共171页
第2页 / 共171页
第3页 / 共171页
第4页 / 共171页
第5页 / 共171页
第6页 / 共171页
第7页 / 共171页
第8页 / 共171页
资料共171页,剩余部分请下载后查看
第1章引言
第2章C语言编写程序
第3章分支结构
第4章-循环结构
第5章函数
第6章回顾数据类型和表达式
第7章数组
第8章指针
第9章结构
第10章函数与程序结构
第11章指针进阶
第12章文件
第 1章 引言 1、对 C 语言来说,下列标识符中哪些是合法的,哪些是不合法的? total, _debug, Large&Tall, Counter1, begin_ 解答:合法的: total 、_debug、Counter1 、begin_ 。 不合法的: Large&Tall 。 2、改写 1.4 求 1-100 中 数的和。 解答: 节中的流程图 1.2 , 能被 6 整除的所有整 3、改写 1.4 节中的程序, 求 1—100 中能被 6 整除的所有整数的和, 并在编程环 境中验证该程序的运行结果。 解答: #include int main(void) {
int i,sum=0; for(i=1;i<=100;i++) if(i%6==0) sum=sum+i; printf("sum=%d\n",sum); return 0; } 4、对于给定的整数 一个流程图判别 n (只能被 1 和自己 析该流程图中哪些 是分支结构和循环 n (n>1),请设计 是 否 为 一 个 素 数 整除的整数),并分 是顺序结构、哪些 结构。
第 2 章 C 语言编写程序 【练习 2-1 】输出短句( Programming in C is fun !):在屏幕上显示一个短句 “Programming in C is fun! ”。试编写相应程序。 解答: #include int main(void) { printf("Programming in C is 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 】输出倒三角图案: 在屏幕上显示如下倒三角图案。 试编写相应程序。 * * * * * * * * * * 解答: #include int main(void) { printf("* * * *\n * * * \n * * \n * \n"); return 0; } 【练习 2-4 】 温度转换:求华氏温度 150°F 对应的摄氏温度(计算公式同 例 2-3 )。试编写相应程序。 解答: #include int main(void) { double celsius,fahr; printf("Enter fahr:\n"); scanf("%lf",&fahr);
celsius=5.0*(fahr-32)/9; printf("celsius=%.2lf\n",celsius); return 0; 5*(fahr-32)/9 能 改 写 成 吗 ?为 什 么 ? 如 果 将 其 改 写 为 5/9*(fahr-32) , } 【 练 习 2-5 】 算 术 表 达 式 5(fahr-32)/9 会影响运算结果吗? 解答: 5(fahr-32)/9 不是合法的 C 表达式,因为不能省略运算符 * ;5/9*(fahr-32) 的值为 0 。 【练习 2-6 】一个物体从 100 米的高空自由落下,编写程序,求它在前 3 秒内 下落的垂直距离。设重力加速度为 10m/s 2。 解答: #include int main(void) { double h,g=10,t=3; h=1/2*g*t*t; printf("h=%f\n",h); return 0; } 【练习 2-7 】 输 入 提示和 输入 语句 的顺 序应该 如何 安排 ?例 2-5 中 , scanf("%d%d%lf", &money, &year,&rate) 能 改 写 为 scanf("%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 3 【练习 2-8 】 计算摄氏温度:输入华氏温度,输出对应的摄氏温度,计算公式 同例 2-3 。试编写相应程序。 解答: #include int main(void) { int celsius, fahr; “Input fahr: ”); Printf( scanf("%d", &fahr); celsius = 5 * (fahr - 32) / 9; printf("celsius = %d\n", celsius);
return 0; } 【练习 2-9 】整数四则运算:输入 2 个正整数,计算并输出它们的和、差、积、 商。试编写相应程序。 解答: #include int main (void) { double m,n; printf("Enter m:\n"); scanf("%lf",&m); printf("Enter n(n!=0):\n"); scanf("%lf",&n); printf("m+n=%.0lf\n",m+n); printf("m-n=%.0lf\n",m-n); printf("m*n=%.0lf\n",m*n); printf("m/n=%.2lf\n",m/n); return 0; } 【练习 2-10】计算分段函数(判断 x 是否不为 0):输入 x ,计算并输出下列分 段函数 f(x) 的值(保留 1 位小数)。试编写相应程序。 y=f(x)= x ≠0 0 x=0 解答: #include int main(void) { double x,y; printf("Enter x:\n"); scanf("%lf",&x); if(x!=0) y=1/x; else y=0; printf("y=f(%lf)=%.1lf\n",x,y);
return 0; } 【练习 2-11】计算分段函数(判断 x 是否小于 0):输入 x ,计算并输出下列分 段函数 f(x )的值(保留 2 位小数)。可包含头文件 math.h ,并调用 sqrt () 函数求平方根,调用 pow() 函数求幂。试编写相应程序。 x 2+2x+ x 0 x 0 y=f(x)= 解答: #include #include int main(void) { double x, y; “Input x: ”); printf( scanf("%lf", &x); if(x >= 0) y = sqrt(x); else y = pow(x,5) + 2 * x + 1 / x; printf("f(%.2f) = %.2f\n", x, y); return 0; } 【练习 2-12】输出华氏 - 摄氏温度转换表:输入两个整数 lower 和 upper ,输出 一张华氏 - 摄氏温度转换表,华氏温度的取值范围是 [lower, upper] ,每次增加 2°F,计算公式同例 2-6 。试编写相应程序。 解答: #include int main(void) { int lower, upper; double celsius, fahr; printf( scanf("%d%d", &lower, &upper); “Input lower and upper: ”); if(lower<=upper){ printf( “fahr celsius\n ”); for(fahr = lower; fahr <= upper; fahr = fahr + 2){ celsius = 5 * (fahr - 32.0)/9 ;
printf("%3.0f %6.1f\n", fahr, celsius); } else printf( return 0; “Invalid Value!\n ”); } 【练习 2-13】求给定序列前 n 项和( 1+1/2+1/3+ …):输入一个正整数 n ,计算 序列 1+1/2+1/3+ …的前 n 项之和。试编写相应程序。 解答: #include int main(void) { int i, n; double sum; “ Input n: ”); printf( scanf("%d", &n); sum = 0; for(i = 1; i <= n; i++) sum = sum + 1.0 / i; printf("sum = %.6f\n", sum); } return 0; } 【练习 2-14】求给定序列前 n 项和( 1+1/3+1/5+ …):输入一个正整数 n ,计算 序列 1+1/3+1/5+ …的前 n 项之和。试编写相应程序。 解答: #include int main(void) { int i, n; double sum; ”,&n); “ Input n: ”); printf( scanf("%d sum = 0; for(i = 1; i <= n; i++) sum = sum + 1.0/(2*i-1); printf("sum = %.6f\n", sum); return 0; }
【练习 2-15】求给定序列前 n 项和( 1-1/4+1/7-1/10 …):输入一个正整数 n , 计算序列 1-1/4+1/7-1/10+1/13-1/16 …的前 n 项之和。试编写相应程序。 解答: #include int main(void) { int flag, i, n, denominator; double item, sum; “ Input n: ”); printf( 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 = %.3f\n", sum); return 0; } 【练习 2-16】执行下列程序段后, sum的值____。 for (i = 1; i <= 10; i++){ sum = 0; sum = sum + i; } 解答: sum 的值是 10 。 2.5 生成乘方表与阶乘表 【练习 2-17】生成 3 的乘方表:输入一个正整数 n,生成一张 3 的乘方表,输 出 3 o到 3?的值。可包含头文件 math.h, 并调用幂函数计算 3 的乘方。试编写相 应程序。 解答: #include #include int main(void) { int i, n; double mypow; printf( “Input n: ”);
分享到:
收藏