1、C语言程序设计第2版课后题答案C语言程序设计能力教程(第二版)课后作业及实训题参考答案第1章 进入C语言程序世界二、1. I love China!printf(we are students.n) 2. 6项目实训题参考答案1编写一个C程序,输出以下信息:* * * * * * * * * * * * * * * * * * * * I am a student!* * * * * * * * * * * * * * * * * * * * main() printf(*n); printf( I am a student!n ); printf(*n); 2已知立方体的长、宽、高分别是10
2、cm、20cm、15cm,编写程序,求立方体体积。解: main()int a,b,c,v; a=10; b=20; c=15; v=a*b*c; printf(v=%d,v);本程序运行结果为: v=3000 第2章 编制C程序的基础知识一 选择题 C B A B A C C 二 操作题1. 3,2,-8,2 3.000000,2.500000,-8.0000002. ABC DE FGH why is 21+35 equal 52 3. 3 14 32 31 24. aa bb cc abc A N 项目实训题1定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。#define M
3、 5main() int n,c; n=2; c=M*n;printf(%dn,c); 2编程求下面算术表达式的值。(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。(1)main() int a=7; float x=2.5,y=4.7;printf(%fn,x+a%3*(int)(x+y)%2/4); (2)main() int a=2,b=3;float x=3.5,y=2.5; printf(%fn,(float)(a+b)/2+(int)x%(in
4、t)y); 第三章 顺序结构程序设计一 选择题 A C D C C二 操作题 1. x=3,a=2,b=32. z=12.7000003. 1 2 1a 2 1 2 三编程题编程题1. 某工种按小时计算工资,每月劳动时间(小时)每小时工资=总工资,总工资中扣除10%公积金,剩余的为应发工资。编写一个程序从键盘输入劳动时间和每小时工资,打印出应发工资。解:#include main() float sj,gz,yfgz; printf(time,salary:); scanf(%f,%f,&sj,&gz); yfgz=sj*gz*0.9; printf(total salary:%fn,yfgz
5、);本程序运行结果为: time,salary:4,3 total salary:10.8000002编写一个程序求出任意一个输入字符的ASCII码解:#include main() char c; printf(Input a string:); scanf(%c,&c); printf(%c ASCII is %dn,c,c);本程序运行结果为: Input a string:a a ASCII is 973、编写一个程序用于水果店售货员算帐:已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付钱数,再输入顾客付款数,打印出应找的钱
6、数。解:main() float p,y,x,j,ys,g,fk; printf(apple,pear,banana,orange(weight)=);scanf(%f,%f,%f,%f,&p,&y,&x,&j);ys=2.5*p+1.8*y+2*x+1.6*j;printf(fu kuan=);scanf(%f,&g);fk=g-ys;printf(result:n);printf(fukuan=%6.2fyuannshoukuan=%6.2fyuannzhaohui=%6.2fyuann,g,ys,fk);本程序运行结果为:apple,pear,banana,orange(weight)=
7、1,2,3,4fu kuan=100result:fukuan=100.00yuanshoukuan= 18.50yuanzhaohui= 81.50yuan项目实训1假设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后可得到本利之和deposit。#includemain() int n; float rate=0.0225,capital,deposit; scanf(%d,%f,&n,&capital); deposit=capital*pow(1+rate,n); printf(deposit=%fn,deposit); 2将一
8、个三位数整数,正确分离出它的个位、十位和百位数字,并分别在屏幕上输出。main() int n,a,b,c; scanf(%3d,&n); a=n/100; b=n%100/10; c=n%100%10/1; printf(a=%d,b=%d,c=%dn,a,b,c); 第四章 选择结构程序设计一、略二、B B A B C B A三、1. 1 02. 2 3 2 23. 10 20 04. ch=A&ch=a&ch=0&ch=9 ch= 5. -1四、上机操作1. 从键盘输入一个英文字母,如果是大写字母,则将它变为小写字母输出;如果是小写字母,则将其变为大写字母输出。 #includemain
9、()char ch;ch=getchar();if(ch=A&ch=a&ch-1) y = 3 (x=-1) 4+x (x-1) y=2*x; else if(x=1) y=3; else y=4+x; printf(y=%f,y);本程序运行结果为: -2 y=2.0000003编写程序,输入一个整数,判断它是奇数还是偶数,若是奇数,输出“Is Odd“;若是偶数,输出“Is Even“。main() int x; scanf(%d,&x); if(x%2=0) printf(Is Evenn); else printf(Is Oddn); 4设计应用程序,求二次方程ax2+bx+c=0的解
10、。#includemain() float a,b,c,disc,x1,x2,p,q; scanf(%f,%f,%f,&a,&b,&c); if(fabs(a)=1e-6) printf( The equation is not a quadraticn); else disc=b*b-4*a*c; if(fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(x1=%8.4f,x2=%8.4fn,x1,x2); else p=-b/(2*a); q=sqrt(-disc/(2*a); printf(%8
11、.4f+%x8.4fin,p,q); printf(%8.4f-%8.4fin,p,q); 5按托运规则,行李不超过50公斤时,运费为0.15元/公斤,如超过50公斤,超过部分的运费为0.22元/公斤,现有行李w公斤,编写一个程序计算运费。解: #include main() float w,f,x; printf(weight:); scanf(%f,&w); if(w=50) x=0.15*w; else x=0.15*50+0.22*(w-50); printf(money:%6.2f yuann,x);本程序运行结果为: weight:20 money:3.00 yuan weight
12、:60 money:9.70 yuan6. 某商场给与顾客购物的折扣率如下: 购物金额购物金额=200元 9折1000元购物金额=500元 8折购物金额=1000元 7.5折输入一个购物金额,输出打折率、购物实际付款金额。 #includemain() float x,y,realx; scanf(%f,&x); if(x=0) printf(Error! You input a worry number!n); y=0; else if(x200) y=1.0; else if(x500) y=0.9; else if(x1000) y=0.8; else y=0.75; if(y!=0)
13、realx=x*y; printf(y=%f, the realx=%5.2fn, y,realx); 项目实训 某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lower class);4岁孩子进中班(Middle class);5岁、6岁孩子进大班(Higher class)。编写程序(用if语句和switch语句),输入孩子年龄,输出年龄及进入的班号。如:输入:3,输出:age:3,enter Lower class。 #includemain() int age; printf(Please input your babys age:); scanf(%d,&age); if(age
14、6|age2) printf(Sorry,your baby cant enter!); else switch(age); case 2: case 3: printf(age:%d,enter Lower classn,age); break; case 4: printf(age:%d,enter Middle classn,age);break; case 5: case 6: printf(age:%d,enter Higher class,age);break; 第五章 循环结构程序设计一、选择题 C C A A D D三、操作题1求s=1+3+5+7+100的值。#include
15、 stdio.hmain() int i,sum=0; for(i=1;i0) n+; sum=sum+score; scanf(%f,&score); ave=sum/n; printf(nThe average score is%.2f,ave); 3输入一行字符以作结束标志,分别统计其中英文字母、空格、数字和其它字符的个数。#include stdio.hmain() char ch; int cha=0,space=0,digit=0,other=0; while(ch=getchar()!=) if (ch=a&ch=A&ch=0&ch=9) digit+; else other+;
16、 printf(ncha=%d,space=%d,digit=%d,other=%d,cha,space,digit,other); 4一张纸的厚度为0.1毫米,珠穆琅玛峰的高度为8848.13米,假如纸张有足够大,将纸对折多少次后可以超过珠峰的高度?main() float h=8848.13,h0=0.0001,h1; int m=0; h1=h0; while(h0=h) h0=2*h0; printf(n m=%d,high=%f,m,h0); m+; printf(n m=%dn,m-1);5、编写一个程序求出满足下列条件的四位数,该数是一个完全平方数;第一、三位上数之和为10,第二
17、、四位上数之积为12。 解: #include main() int i,j,a,b,c,d; for(i=32;i=99;i+) j=i*i; a=j/1000; b=j/100-a*10; c=j/10-a*100-b*10; d=j-a*1000-b*100-c*10; if(a+c=10&b*d=12) printf(%d ,j); 本程序运行结果为: 1296 92166、一个正数与3的和是5的倍数,与3的差是6的倍数,编写一个程序求符合条件的最小数。 解: #include main() int n; n=1; while(1) n=n+1; if(n+3)%5=0&(n-3)%6
18、=0)break; printf(n=%d,n);本程序运行结果为: n=277、已知xyz+yzz=532,其中x、y、z都是数字,编写一个程序求出x、y、z分别是多少。解: #include main() int x,y,z,i; for(x=1;x=9;x+) for(y=1;y=9;y+) for(z=0;z=9;z+) i=100*x+10*y+z+100*y+10*z+z; if(i=532) printf(x=%d,y=%d,z=%dn,x,y,z); 本程序运行结果为: x=3,y=2,z=18、学校有近千名学生排队,5人一行余2人,7人一行余3人,3人一行余1人,求学生人数。
19、 解: #include main() int n; for(n=1000;n=10;n-) if(n%5=2&n%7=3&n%3=1)break; printf(n=%dn,n);本程序运行结果为: n=9979验证歌德巴赫猜想:任意一个大于6的偶数均可表示为两个质数的和。#includemain() int i,x; int p,q,k1,k2; printf(Please input an odd data(=6):); scanf(%d,&x); for(p=3;p2) for(i=2;ip;i+) if(p%i=0) k1=0; for(i=2;iq;i+) if(q%i=0) k2
20、=0; if(k1=1&k2=1) printf(%d=%d+%dn,x,p,q); 10一个数恰好等于它的平方数的右端,这个数称为同构数 。如 :5的平方是25,25的平方是625。找出11000之间的全部同构数 。#include math.h main() int i,j,k=0; for (i=2;i1000;i+) if (i/10=0) j=1; /*因为i是整型,所以是整除*/ else if (i/100=0) j=2; else if (i/1000=0) j=3; if (long int)i*i%(int)pow(10,j)=i) /*同构数的定义*/ k+; /* 计数
21、器*/ printf(%10d,i); if (k%5=0) printf(n); printf(nk=%d,k); 项目实训1. 编写程序求1-1/2+1/3-1/4+1/99-1/100的值#include stdio.hmain() int i, s=-1; float sum=1.0; for(i=2;i=100;i+) sum=sum+1.0*s/i; printf(sum=%f,sum);2曾有一位印度国王要奖赏他的聪明能干的宰相达依尔。达依尔只要求在国际象棋的棋盘格上放置小麦粒,第一格放1粒,第二格放两粒,第三格放4粒,第四格放8粒,,最后能有多少小麦粒呢?main() floa
22、t i ,s=1,t=1; for (i=1;i=63;i+) t*=2; s+=t; printf(s=%fn,s);3打印水仙花数,即一个三位数各位上的数字之和等于它本身,如:153=13+53+33 。main()int k1,k2,k3,i; for (k1=1;k1=9;k1+) for (k2=0;k2=9;k2+) for (k3=0;k3=9;k3+) i=k1*k1*k1+k2*k2*k2+k3*k3*k3; if (i=k1*100+k2*10+k3) printf(n%d=%d3+%d3+%d3,i,k1,k2,k3); 4编制电视歌手大奖赛评分程序,要求评委人数和每位评
23、委的打分从键盘输入,去掉一个最高分,再去掉一个最低分,求评委给出的最后得分。main()/* TV大奖赛 */int n,i=1; float x,max,min,sum=0;printf(nPlease input the number of score:);scanf(%d,&n);printf(nInput score:);scanf(%f,&x);max=x;min=x;sum=x;while (in) i+; scanf(%f,&x); sum+=x; if (maxx) max=x ; else if (xmin) min=x;sum=(sum-max-min)/(n-2);pri
24、ntf(The last score is%8.2fn,sum);5打印下列图形。* * * * * * * * * * * * * * * * * * * * * * * * *main() int i,j; for (i=1;i=5;i+) for (j=1;j=5-i;j+) printf ( ); for (j=1;jave) printf(%f ,xi); 3、编写一个程序判定用户输入的正数是否为“回文数”,所谓回文数是指数正读反读都相同。#include main() int buffer10,i,k,b; long number,n; printf(input a positive number:); scanf(%ld,&number); k=0; n=number; do bufferk=n%10; k=k+1; n=n/10; while(n!=0); b=1; for(i=0;i=(k-1)/2;i+) if(bufferi!=bufferk-1-i) b=0; if(b) printf(%ld is huiwenshun,number);else print
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1