C语言程序设计第2版--课后的题目详解_第1页
C语言程序设计第2版--课后的题目详解_第2页
C语言程序设计第2版--课后的题目详解_第3页
C语言程序设计第2版--课后的题目详解_第4页
C语言程序设计第2版--课后的题目详解_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语言程序设计能力教程(第二版)课后作业及实训题 参考答案第 1 章 进入 C 语言程序世界1. I love China!printf(we are students.n)2. 6项目实训题参考答案1 编写一个 C 程序,输出以下信息:I am a student!main()*n); printf(printf(I am a student!n);printf(*n);2 已知立方体的长、宽、高分别是 10cm 、 20cm 、 15cm ,编写程序,求立方体实用标准文案体积。解:main()int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf(v=%d,v

2、); 本程序运行结果为 : v=3000第 2 章 编制 C 程序的基础知识选择题C B A B A C C二 操作题精彩文档实用标准文案1. 3 , 2,-8 ,23.000000 , 2.500000 ,-8.0000002. ABC DEFGHwhy is 21+35 equal 523.3 14 32 31 24. aa bb cc abcA N项目实训题1 定义一个符号常量 M 为 5 和一个变量 n 值为 2 ,把它们的乘积输出。 #define M 5main() int n,c;n=2; c=M*n;精彩文档实用标准文案printf(%dn,c);2编程求下面算术表达式的值。(

3、 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%(int)y); 第三章 顺序结构程序设计一 选择题A C D C C二 操作题1. x=3,a=2,b=

4、32. z=12.700000精彩文档实用标准文案3. 1 2 1a2 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);本程序运行结果为 :精彩文档实用标准文案time,salary:4,3 to

5、tal 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:aa ASCII is 973 、编写一个程序用于水果店售货员算帐:已知苹果每斤 2.50 元,鸭梨每斤 1.80元,香蕉每斤 2 元,橘子每斤 1.6 元,要求输入各类水果的重量,打印出应付精彩文档实用标准文案钱数,再输入顾客付款数,打印出应找的钱数。解:main()float

6、 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.2fyua nn,g,ys,fk);本程序运行结果为 :apple,pear,banana,orange(weight)=1,2,3,4fu kuan=

7、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)

8、; 2 将一个三位数整数,正确分离出它的个位、十位和百位数字,并分别在屏幕 上输出。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 2004.ch= A&ch= a &ch= 0&ch=9ch= 5. -1四、上机操作1. 从键盘输入一个英文字母,如果是大写字母,则将它变为小写字母输出;如果 是小写字母,则将其变为大写字母输出。#

9、includemain()精彩文档实用标准文案char ch;ch=getchar();if(ch=A&ch=a&ch-1)(x=-1)4+x(x-1)y=2*x;else if(x=1)y=3;else y=4+x;printf(y=%f,y);本程序运行结果为 :-2y=2.0000003编写程序, 输入一个整数, 判断它是奇数还是偶数, 若是奇数, 输出“Is Odd ;若是偶数,输出“ Is Even “。main() int x;scanf(%d,&x);if(x%2=0)printf(Is Evenn);else printf(Is Oddn); 4 设计应用程序,求二次方程 ax

10、 2 +bx+c=0 的解。精彩文档实用标准文案#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/(

11、2*a);printf(%8.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;elsex=0.15*50+0.22*(w-50);printf(money:%6.2f yuann,x); 本程序运行结果为 : we

12、ight:20 money:3.00 yuan weight:60 money:9.70 yuan精彩文档实用标准文案6. 某商场给与顾客购物的折扣率如下:购物金额 购物金额 =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

13、 if(x1000) y=0.8;else y=0.75;if(y!=0)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()

14、int age;printf(Please input your babys age:);scanf(%d,&age);if(age6|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;

15、精彩文档实用标准文案第五章 循环结构程序设计一、选择题C C A A D D三、操作题1 求 s=1+3+5+7+ 100 的值。#include 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,digi

16、t=0,other=0;while(ch=getchar()!=) if (ch=a&ch=A&ch=0&ch=9) digit+;else other+; 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

17、=%d,high=%f,m,h0);m+; printf(n m=%dn,m-1);5、 编写一个程序求出满足下列条件的四位数,该数是一个完全平方数;第一、三位 上数之和为 10 ,第二、四位上数之积为 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的倍

18、数,与 3 的差是 6 的倍数,编写一个程序求符合条件 的最小数。解:#include main()int n;n=1;while(1)n=n+1;if(n+3)%5=0&(n-3)%6=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;

19、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 人, 求学生人数。解:#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,k

20、1,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=0;if(k1=1&k2=1) printf(%d=%d+%dn,x,p,q); 10一个数恰好等于它的平方数的右端,这个数称为同构数。如 :5 的平方是 25 ,25 的平方是 625 。找出 1 1000 之间的全部同构数 。#include math.hmain() int i,j,k=0;for (i=2;i1000;i+) if (i/10=

21、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+;printf(%10d,i);if (k%5=0)printf(nk=%d,k);printf(n); /* 计数器 */+1/99-1/100 的值项目实训1. 编写程序求 1-1/2+1/3-1/4+#include stdio.hmain()int i, s=-1;float sum=1.0; for(i=2;i=100;i+)

22、 sum=sum+1.0*s/i;printf(sum=%f,sum); 2曾有一位印度国王要奖赏他的聪明能干的宰相达依尔。达依尔只要求在国际象棋的棋盘格上放置小麦粒,第一格放 1 粒,第二格放两粒,第三格放 4 粒,第四格放 8 粒,,最后能有多少小麦粒呢?main() float i ,s=1,t=1;精彩文档实用标准文案for (i=1;i=63;i+) t*=2;s+=t; printf(s=%fn,s);3打印水仙花数,即一个三位数各位上的数字之和等于它本身,如:153=1 3+5 3+3 3 。main()int k1,k2,k3,i;for (k1=1;k1=9;k1+)for

23、(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编制电视歌手大奖赛评分程序,要求评委人数和每位评委的打分从键盘输入,去掉一个最高分,再去掉一个最低分,求评委给出的最后得分。main()/* TV 大奖赛 */int n,i=1;精彩文档实用标准文案float x,max,min,sum=0;printf(nPlease input the number of score:); scanf(%d,&n

24、);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);printf(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 、

25、编写一个程序判定用户输入的正数是否为“回文数”,所谓回文数是指数正读反读都相同。精彩文档实用标准文案#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);e

26、lse printf(%ld is not huiwenshun,number); 4 、求二维数组的周边元素之和#include 精彩文档实用标准文案main()int a33=3,-2,1,2,0,1,3,-2,3,1,0,4;int i,j,sum=0;for(i=0;i3;i+)for(j=0;j3;j+)for(i=0;i3;i+)if (i=0|j=0|j=2|i=2) sum=sum+aii;printf(%d,sum);5、编写程序找出一个二维数组的鞍点。即该位置上的元素在该行最大,但是在该列 最小。main() int i,j,k,max,maxi,maxj,flag1,fl

27、ag2;int a23=1,2,3,4,5,6;flag2=0;for (i=0;i2;i+) max=ai0;for (j=0;jmax) max=aij; maxj=j;for (k=0,flag1=1;k2 & flag1;k+)if (akmaxjmax) flag1=0;if (flag1) printf(n %d is answer,locate:line %d colum %dn,max,i,maxj);flag2=1; if (!flag2) printf(n no answer!); 项目实训:1、评定奥运会某参赛选手的成绩。设某参赛选手的某项目有个最高分和一个最低分,给出其

28、最后得分。8 位评委,要求去掉一#include #define N 10/* 定义字符常量 */main()int xN,i,max,min,score=0; printf(Please input %d integers:n,N); /* 输入 N 个数,存入数组中 */for(i=0;iN;i+) scanf(%d,&xi); score+=xi; 值*/max=min=x0;默认为最大或最小值*/for(i=1;iN;i+)if(maxxi) min=xi;/* 赋 初/* 将第一个数/* 求最大值 */* 求最小值 */精彩文档实用标准文案printf(The last score

29、is : %dn,(score-max-min)/(N-2); 2、打印出以下杨辉三角形(要求打印出 10 行)。111121133114641#define N 11main() int i,j,aNN;for (i=1;iN;i+) aii=1;ai1=1;for (i=3;iN;i+)for (j=2;j=i-1;j+)aij=ai-1j-1+ai-1j;for (i=1;iN;i+) for (j=1;j=i;j+)printf(%6d,aij);精彩文档实用标准文案printf(n); printf(n); #define N 11main()int i,j,aNN;for(i=1;

30、iN;i+)aii=1;ai1=1;for(i=3;iN;i+)for(j=2;j=i-1;j+)aij=ai-1j-1+ai-1j;for(i=1;iN;i+)for(j=1;j=i;j+)p rintf(%6d,aij);精彩文档实用标准文案printf(n);printf(n);本程序的运行结果为:1111211331146411510105116152015611721353521711828567056288119368412612684369 13、一个程序,将字符数组s2中的全部字符拷贝到字符数组s1 中。不用strcpy函数。拷贝时, 0 也要拷贝过去。 0 后面的字符不拷贝。

31、 解:#include stdio.h精彩文档实用标准文案main()char from80,to80;int i;printf(Input string:);scanf(%s,from); for(i=0;i=strlen(from);i+) toi=fromi;printf(the result: %sn,to); 本程序的运行结果为: the result:Input string:student第七章 函数一、选择题B D C B B D A A D三、编程题1、写一个判定偶数的函数,在主函数中输入一个整数,输出是否是偶数的信息。精彩文档实用标准文案int even(x)int x ;

32、 if (x%2=0) return(1);else return(0); main() int x;scanf(%d,&x);if (even(x) printf(x is even.);else printf(x is not even.);4这2、统计 400 499 这些数中 4 这个数字出现的次数,要求判断一个数有几位 个数字用函数实现。main() int i,k=0;for(i=400;i=499;i+)k=k+num(i);printf (number=%dn,k);num(x)int x; int y,k=0;精彩文档实用标准文案while(x!=0) y=x%10;if(y

33、= = 4)k+;x=x/10; return(k);3 、找出 1000 之内的所有“完数” ,要求判断一个数是否为完数用函数实现。main() int i;for (i=1;i1000;i+)if (wan(i) printf (%5d,i);printf (n);wan(x)int x; int i,k;k=0;for (i=1;i=x/2;i+)if (x%i= =0)k=k+i;if (k= =x)return (1);else return (0); 精彩文档实用标准文案项目实训:;函数 isprime ( ) 用来,否则返回 0 。请编写1 、 已有变量定义和函数调用语句: in

34、t x=57 ; isprime (x)判断一个整型数 a 是否为素数,若是素数,函数返回 1isprime 函数。isprime (int a) 解:main() int x=57;int isprime(int);if (isprime(x) printf( “%d is prime. ” ,x);else printf( “%d is not prime. ” ,x);isprime (int a)int i;for(i=2;isqrt(double)a);i+)if(a%i= =0) return 0;精彩文档实用标准文案return 1;2、输入 10 个学生的成绩,分别用函数实现:

35、(1) 求平均成绩; (2)按分数高低进行排序并输出。解: main( )float average(float b);void sort(float b);float a10,j,aver;printf(input 10:);for(j=0;j10;j+)scanf(%f,&aj);aver=average(a);printf(aver=%.2fn,aver);sort(a);for(j=0;j10;j+)printf(%10.2f,aj);float average(float b )精彩文档实用标准文案int j; float sum=0,aver; for(j=0;j10;j+) su

36、m=sum+bj;aver=sum/10.0;return(aver);void sort(float b )int i,j,max,k;for(i=0;i10;i+)max=bi; k=i;f or(j=i+1;j10;j+)i f(maxbj) max=bj; k=j;bk=bi;bi=max;本程序运行结果为 :(输入)input 10:45 12 86 85 79 84 85 96 45 89精彩文档实用标准文案aver=70.6096.0079.00 45.0089.00 86.0045.00 12.0085.00 85.0084.00第 8 章 指针、选择题D A C C(D) D

37、 C D、填空题1. m 2. 指针数组名 3. ABCDCD 4.49 5. 25 三、程序设计题( 1) main()int a,b,c,*p1,*p2,*p3; scanf(%d,%d,%d,&a,&b,&c);p1=&a;p2=&b;p3=&c;if(*p1*p2) max=*p1 else max=*p2; if(*p3max) max=*p3;printf(nmax=%dn,max);程序结果:9,0,10max=102) #include精彩文档实用标准文案main()int a10,*p,i,t;p=a;for(i=0;i10;i+)scanf(%d,p+i);for(i=0;

38、i5;i+)t=*(p+i);*(p+i)=*(p+9-i);*(p+9-i)=t;for(i=0;i10;i+)printf(%5d,*(p+i);printf(n);( 3) #includemain() char str80,*p,i,len=0;p=str;gets(p);for(i=0;*(p+i)!=0;i+)len+;printf(len=%dn,len);精彩文档实用标准文案项目实训题目:#includechar *link(char *p1,int M,char *p2,int N) int i,j;for(i=0;iM;i+)if(*(p1+i)=0)break;for(j

39、=0;j=3)days+=1;精彩文档实用标准文案printf(n%dmonth%ddayis%ddayof %d.,date.month,date.day,days,date.year);本程序运行结果为 :Please input date:(year,month,day)2000,3,13month 1day is 61 day of 2000.2、有 10 名学生,每个学生包括学号、姓名、 3 科成绩,编程序求每个学生的平均成 绩,并打印最高分学生的信息。#define N 4main( )struct studentint num;char name15;float c3;float

40、 ave;struct studentstuN;struct student*pN,*t;int i,j,k; float x1,x2,x3;精彩文档实用标准文案for(i=0;iN;i+)scanf(%d%s%f%f,&stui.num,,&x1,&x2,&x3);stui.c0=x1; stui.c1=x2; stui.c2=x3;k=0;for( j=0;j=2;j+)k=k+stui.cj;stui.ave=k/3.0;pi=&stui;/* 排序 -由大到小 */for(i=0;iN-1;i+)for(j=i+1;javeave)t=pj;pj=pi;pi=t;pr

41、intf( “ %5d%15s%3d%3d%6.1fn ” , p0-num,pi-name, p0-c0,p0-c1,p0-c2);3 、建立一个 3 名学生数据的单链表。精彩文档实用标准文案解: #define NULL 0#define LEN sizeof(struct student)struct student int no;struct student *next;structstudent *head;structstudent *creat() structstudent *p,*q;int n,i;printf(how many:);scanf(%d,&n);for(i=0

42、;ino);if(i=0) head=p;else q-next=p;q=p;精彩文档实用标准文案p-next=NULL;return(head);print (struct student * head ) struct student *p;p=head;while(p!=NULL) printf(%6d ,p-no);p=p-next;main()* head; struct studenthead= creat(); print(head);本程序运行结果为 :how many:5精彩文档实用标准文案NO:12NO:78NO:98以上为输入)NO:45NO:7512 78 98 45 75实训题(1)图书馆的图书检索上包括:书名、作者姓名、出版日期、登录号、书价等内 容。试根据上述五项内容定义一个结构体类型,声明结构体变量 book ,再 从键盘为变量 book 输入数据,并从屏幕输出数据。(2)构体数组(可以使用链表) ,将 5 名考生数据输入计算机,并列表从屏幕输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论