《C语言程序设计(第3版)何钦铭颜晖第2章C语言编写程序.docx》由会员分享,可在线阅读,更多相关《C语言程序设计(第3版)何钦铭颜晖第2章C语言编写程序.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品word 可编辑资料 - - - - - - - - - - - - -第 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 e
2、ven 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 】 温度转换:求华氏温度150F对应的摄氏温度(运算公式同例 2-3 );试编写相应程序
3、;解答:#include int main(void)double celsius,fahr;printf(Enter fahr:n); scanf(%lf,&fahr); celsius=5.0*(fahr-32)/9;第 1 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -printf(celsius=%.2lfn,celsius);return 0;【 练 习 2-5 】 算 术 表 达 式 5*(fahr-32)/9能 改 写 成 5(fahr-32)/9吗 ? 为 什 么 ? 如 果 将 其 改 写
4、为 5/9*(fahr-32) ,会影响运算结果吗?解答: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=%fn,h);return 0;【练习2-7 】输入 提示和 输入 语句 的顺 序应当 如何 支配 ?例 2-5中, scanf(%d%d%lf,&money, &year,&
5、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 】 运算摄氏温度:输入华氏温度,输出对应
6、的摄氏温度,运算公式同例 2-3 ;试编写相应程序;解答:#include int main(void)int celsius, fahr;Printf(“Input fahr:”); scanf(%d, &fahr);celsius = 5 * (fahr - 32) / 9; printf(celsius = %dn, celsius);第 2 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -return 0;【练习 2-9 】整数四就运算:输入2个正整数,运算并输出它们的和、差、积、商;试编写相应程序;解
7、答:#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=%.0lfn,m+n); printf(m-n=%.0lfn,m-n); printf(m*n=%.0lfn,m*n); printf(m/n=%.2lfn,m/n);return 0;【练习 2-10 】运算分段函数(判定x 是否不为 0):输入 x ,运算并输出以下分段函数 f(x)的值(保留 1 位小数);试编写相应程序;x 0y=f(x)=0 x=
8、0解答:#include int main(void)double x,y;printf(Enter x:n); scanf(%lf,&x); if(x.=0)y=1/x;elsey=0;printf(y=f(%lf)=%.1lfn,x,y); return 0;第 3 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -【练习 2-11 】运算分段函数(判定x 是否小于 0):输入 x ,运算并输出以下分段函数 f(x)的值(保留 2位小数);可包含头文件math.h ,并调用 sqrt()函数求平方根,调用po
9、w() 函数求幂;试编写相应程序;x2+2x+x0 y=f(x)=x0解答:#include #include int main(void)double x, y;printf(“Input x:”);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 】输出华氏 - 摄氏温度转换表:输入两个整数 lower 和 upper ,输出一张华氏 - 摄氏温度转换表,华氏温度的取值范畴是 lower, upper ,
10、每次增加2F,运算公式同例 2-6 ;试编写相应程序;解答:#include int main(void)int lower, upper; double celsius, fahr;printf(“Input lower and upper:”); scanf(%d%d, &lower, &upper);if(lower=upper)printf(“fahrcelsiusn”); for(fahr = lower; fahr = upper; fahr = fahr + 2)celsius = 5 * (fahr - 32.0)/9 ; printf(%3.0f %6.1fn, fahr,
11、celsius);第 4 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -elseprintf(“Invalid Value.n”);return 0;【练习 2-13 】求给定序列前n 项和( 1+1/2+1/3+):输入一个正整数n ,运算序列 1+1/2+1/3+的前 n 项之和;试编写相应程序;解答:#include int main(void)int i, n; double sum;printf(“ Input n:” );scanf(%d, &n); sum = 0;for(i = 1; i =
12、n; i+)sum = sum + 1.0 / i; printf(sum = %.6fn, 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;printf(“ Input n:” );scanf(%d” ,&n); sum = 0;for(i = 1; i = n; i+)sum = sum + 1.0/(2*i-1); printf(sum = %.6fn, sum);
13、return 0;【练习 2-15 】求给定序列前n 项和( 1-1/4+1/7-1/10):输入一个正整数n ,第 5 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -运算序列 1-1/4+1/7-1/10+1/13-1/16的前 n 项之和;试编写相应程序;解答:#include int main(void)int flag, i, n, denominator; double item, sum;printf(“ Input n:”);scanf(%d, &n); sum = 0;flag = 1;den
14、ominator = 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 】执行以下程序段后, sum的值 ; for (i = 1; i = 10; i+)sum = 0;sum = sum + i;解答: sum 的值是 10 ;2.5 生成乘方表与阶乘表【练习 2-17 】生成 3 的乘方表:输入一个正整数 n,生成一张 3
15、 的乘方表,输出 3 o到 3.的值;可包含头文件 math.h, 并调用幂函数运算 3 的乘方;试编写相应程序;解答:#include #include int main(void)int i, n;double mypow;printf(“Input n:”);scanf(%d, &n);第 6 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -for(i = 0; i = n; i+) mypow = pow(3, i);printf(pow(3,%d) = %.0fn, i, mypow);return
16、0;【练习2-18 】求组合数:依据以下公式可以算出从n个不同元素中取出m 个元素( mn)的组合数;输入两个正整数m 和 n (mn),运算并输出组合数;要求定义和调用函数fact(n)运算 n. ,函数类型是 double ;解答:#include double fact(int n); int main(void)int m, n; double s;printf(“Input m and n:”); scanf(%d%d, &m, &n);s = fact(n)/(fact(m) * fact(n-m); printf(result = %.0fn, s);return 0;doubl
17、e fact(int n)int i;double product;product = 1;for(i = 1;i = n; i+) product = product * i;return product;习题 21求整数均值:输入4 个整数,运算并输出这些整数的和与平均值,其中平均值精确到小数点后1 位;试编写相应程序;解答:#include 第 7 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -int main(void)double num1, num2,num3,num4,;printf(Input
18、 num1, num2, num3 and num4:”); scanf(%lf%lf%lf%lf, &num1, &num2,&num3,&num4); printf(sum=%.0lfn, num1+ num2+ num3+num4); printf(average= %.1lfn, (num1+num2+num3+num4)/4);return 0;2. 阶梯电价: 为了提倡居民节省用电, 某省电力公司执行“阶梯电价”, 安装一户一表的居民用户电价分两个“阶梯”:月用电量 50 千瓦时(含 50 千瓦时) 以内的,电价为 0.53 元/ 千瓦时;超过 50 千瓦时,超出的用电量电价上调
19、0.05 元/ 千瓦时;输入用户的月用电量(千瓦时) ,运算并输出该用户应支付的电费(元);试编写相应程序;解答:#include int main(void)double cost, e; printf(Input e:);scanf(%lf, &e); if(e = 50)cost = 0.53 * e;elsecost = 0.53 * 50 + (e - 50) * 0.58;printf(cost = %.2fn, cost);return 0;n位小数;试编写相应程序解答:#include int main(void)int i, m, n; double sum;第 8 页,共
20、10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -printf(Input m and n:) ; scanf(%d%d, &m, &n);sum = 0;for(i = m; i = n; i+)sum = sum + i * i + 1.0 / i; printf(sum = %.6fn, sum);return 0;4 求 交 错 序 列 前n项 和 : 输 入 一 个 正 整 数n , 计 算 交 错 序 列1-2/3+3/5-4/7+5/9-6/11+的前 n 项之和;试编写相应程序;解答:#include i
21、nt main(void)int flag, i, n; double item, sum;printf(“ Input n:” );scanf(%d, &n); sum = 0;flag = 1;for(i = 1; i = n; i+)item = flag * 1.0 * i / (2 * i - 1); sum = sum + item;flag = -flag;printf(sum = %.3fn, sum);return 0;h.h ,并调用 sqrt( )函数求平方根;试编写相应程序;解答:#include #include int main(void)int i, n; dou
22、ble sum;printf(Input n:);第 9 页,共 10 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -scanf(%d, &n); sum = 0;for(i = 1; i = n; i+)sum = sum + sqrt(ii);printf(sum = %lffn, sum);return 0;6. 求给定序列前 n 项和( 1!+2!+):输入一个正整数n ,求 e=1!+2!3!+n!的值;要求定义和调用fact (n)运算 n!,函数类型是 double ;试编写相应程序;解答:#include
23、double fact(int n); int main(void)int i, n; double sum;printf(Input n:);scanf(%d, &n); sum = 0;for(i = 0; i = n; i+)sum = sum + fact(i); printf(sum = %.0fn, sum);return 0;double fact(int n)int i;double product;product=1;for(i = 1; i = n; i+) product = product * i;return product;第 10 页,共 10 页 - - - - - - - - - -