《C语言课后答案(86页).doc》由会员分享,可在线阅读,更多相关《C语言课后答案(86页).doc(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-苏小红等编著,电子工业出版社感谢龙三少同学的支持.第一章:1.1硬件:光盘驱动器,硬盘驱动器,网络卡,声音卡,CPU,主板,内存,游戏杆,键盘,鼠标.软件:QQ,迅雷,千千静听,暴风影音,超星阅读器,X-scan.1.2五个部分:控制器,运算器,存储器,输入设备,输出设备.1.3/*功能:本程序修改课本上例1.4,计算123+456作者:漏网之鱼创建日期:20070729版本:无修改:无 */#includemain()printf(%dn,123+456); /*只修改这儿即可*/ 1.4BASIC,C,C+,C#,Java,VB;PHP,JavaScript,VBScript,ASP,P
2、YTHON,Ruby On Rails.1.5学习:在上搜索资料.生活:在QQ上泡MM.第二章:2.1第五个和第六个是合法的.2.2CBABDDDCB2.3(1).sqr(a*a+b*b)/(2*c)(2).fabs(a+b)*(c+d)+2)(3).(log(x)+sin(y)/2(4).2*PI*r /*其中PI是宏常量,即 #define PI 3.141592653*/(5).1/(1+1/x)(6).(sin(3.141592653/6)+2*exp(x)/(2*y+pow(y,x)第三章: 3.1:C语言语句分为四个类型:控制语句;表达语句;复合语句;空语句.3.2:CD /*本小
3、题答案感谢观海听涛的东东同学的提醒*/3.3:(1)地址前没有&scanf(%d,%d,&a,&b);(2)类型不匹配printf(%f,f);(3)类型不匹配scanf(%lf%d,&var,&a);(4)地址前没有&scanf(%d,%dn,&a,&b);(5)scanf不能限制精度scanf(%5f,&f);(6)scanf中不能有=scanf(%d,%d,&a,&b);3.4:(1)aabbccabc(2)01 1(3)68(4)3.500000(5)12 9 13 9(6)12 9 13 93.5:/*功能:本程序从键盘接收三个参数,分别为三角形的三条边输出三角形的面积作者:漏网之鱼
4、日期:20070731修改:版本:无*/#include#includeint main()float a,b,c,s,area;printf(input a,b and c:n);reput: /*提示输入三条边长度*/scanf(%f%f%f,&a,&b,&c);if (a+bc&a-bc) printf(error! reput please:n);/*如果不能组成三角形,则重新输入*/ goto reput; s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); /*根据公式计算面积*/ printf(the area is %fn,area)
5、; return (0); 第四章:4.1:(1)见课本69页.(2)见课本138页.(3)见课本138页139页.4.2:(1)D(2)B(3)D(4)D /*第二小题改正感谢观海听涛的东东同学的提醒, 同学们做题要用眼镜,否则容易做错题,当然,这是我为自己找的一个借口*/4.3:(1)over!(2)right/*出题者希望答案是这个,不过,课本上这个程序不可能通过编译,因为没有包含头文件conio.h.即课本上的程序中并没有#include居然用了getchar,用个毛!(冰雪封情语)*/(3)答案同上,问题同上.(4)这个我不说你也猜得到吧.(5)abcdefg$abcdefg abc
6、defg/*老实说,我对他们把conio.h这个头文件忘了非常气愤,建议读者看一下K&R C.*/(6)* * * *(7)*#*#*#$4.4:(1)(year%4=0&year%100!=0)|(year%400=0) flag(2)(ch=65&ch=95&ch48&ch58ch=32(3)fahrcelsius=5.0/9.0*(fahr-32) fahr+=step/*我又不得不多说几句了,这个程序很经典,我相信大伙以后还会看到的.只是课本上第十二行少了一个%,它是这么写的pirntf(4.0ft%6.1fn,fahr,celsius);上面一个还漏了,你用getchar,用个毛!*
7、/ 4.5:/*功能:该程序判断输入的数字的奇偶性以及正负.作者:漏网之鱼日期:20070804修改:版本:无*/ #include #include int main(void) int s;printf(please input the number:n); scanf(%d,&s);if (s0) printf(its a positive numbern ); /*判断这个数字是不是大于零*/ else if (s=0) printf(its zero!n); /*为零*/ else printf(itsa negetive numbern); /*负数*/ if(int)fabs(s
8、)%2) /*用这个数的绝对值取模,如为1,则为奇数,否则为偶数*/ printf(itsa odd numbern); else printf(itsa even numbern); getch();return (0);4.6:/*功能:一个分段函数,根据X的值输出Y.作者:漏网之鱼日期:20070805修改:版本:无*/ #include #include intmain(void) int x; float y; printf(enter x please!n); scanf(%d,&x);if(x) /*非零的X*/ if (x0) y=exp(-x); printf(y is %f
9、n,y); else y=-(exp(x); /*老实说,优先级我也搞不懂,还是加个括号比较保险*/ printf(y is %fn,y); else y=1; printf(y is %fn,y); return(0);4.7:/*功能:判断输入的三条边能否组成三角形,并判断三角形的类型作者:漏网之鱼日期:20070805版本:修改:无*/ #include int main(void) int a,b,c; printf(enter a,b,c please:n); scanf(%d%d%d,&a,&b,&c);if(a-bc) if(a=b|b=c|c=a) printf(its ais
10、oceles trianglen); else if (a*a+b*b=c*c|a*a+c*c=b*b|c*c+b*b=a*a) printf(its a right-angled trianglen); else printf(its a normal trianglen); else printf(they cannt make up of atrianglen);return(0); 4.8:/*功能:根据输入显示一句话作者:漏网之鱼日期:20070805修改:版本:无*/ #include int main(void) int c;printf(*Time*n1 morningn2 a
11、fternoonn3 nightnplease enter);printf(your choice:n); /*这两句比较变态,建议不用*/ scanf(%d,&c);switch (c)case 1: printf(Good morningn); break;case 2: printf(Good afternoonn); break;case 3: printf(Good nightn); break;default : printf(Selection error!n); break; return(0);4.9:/*功能:得到一个年份和一个月份,输出这个月有多少天作者:漏网之鱼日期:2
12、0070805修改:版本:无*/ #include int main(void) int year,month,flag; printf(enter the year and monthn); scanf(%d%d,&year,&month);if(year%4=0&year%100!=0)|(year%400=0) flag=1;else flag=0;printf(the month of the year have );switch (month) case 1: printf(31); break;case 2: printf(%d,flag+28); break;case 3:pri
13、ntf(31); break;case 4:printf(30); break;case 5:printf(31); break; /*这儿这么多,显然是麻烦了,你可以试试用几个for循环*/case 6:printf(30); break;case 7:printf(31); break;case 8:printf(31); break;case 9:printf(30); break;case 10:printf(31); break;case 11:printf(30); break;case 12:printf(31); break; printf( daysn); return(0)
14、;4.10:/*功能:计算从1加到101,其中每次加二作者:漏网之鱼日期:20070805版本:修改:无*/#includeint main(void) int i=101,sum=0;while(i+1) sum+=i; /*这个题蛮有意思*/ i-=2;printf(the sum is %d,sum); return(0);4.11:/*功能:计算从1到99的和,其中第一项是该数字和它后面两个数字的乘积作者:漏网之鱼日期:20070805修改:版本:无*/ #include int main(void) int i=99,sum=0; while(i+1) sum+=i*(i+1)*(i
15、+2); /*和上一题一样,没有什么可说的*/ i-=2; printf(the sum is %d,sum); return(0);4.12:/*功能:计算从1到10的阶乘的和作者:漏网之鱼日期:20070805修改:版本:无*/ #include #include int fac(int x); /*不好意思,这儿用了个函数(chapter5)*/ int main(void) int i=4,sum=0; while(i) sum+=fac(i); i-; printf(the sum is %d,sum); return(0);int fac(int i)int fac=1; whil
16、e(i) fac*=i; /*函数功能:计算输入参数的阶乘*/ i-; return (fac);4.13:/*功能:不好说,假设N=2,A=3,它就会计算33+3,N=4,A=3,它会算3333+333+33+3作者:漏网之鱼日期:20070805修改:版本:无*/ #include #include int main(void) int a,n,sum=0,i=0; printf(enter a and n please:n); scanf(%d%d,&a,&n);while(n) sum+=a*n*pow(10,i);/*这句有些乱.*/ n-=1; i+=1; printf(the s
17、um is %d,sum); return(0);4.14:/*功能:计算PI的值作者:漏网之鱼日期:20070805版本:修改:无*/ #include int main(void) float n=50, pi,sum=1; /*可以将这一百个数分为50组,规律就出来了*/ while(n) sum*=(2*n)*(2*n)/(2*n-1)*(2*n+1); n-=1; pi=sum+sum; printf(pi is %f,pi); return(0);4.15:/*功能:计算共加了多少项才可以让最后一项小于0.00001作者:漏网之鱼日期:20070805版本:修改:无*/ #incl
18、ude #include #define mix0.00001 int fac(int x); int main(void) int n=1; while(float)1/fac(n)mix) n=n+=1; printf(we add it %d timesn,n+2);/*当它小于0.00001时,WHILE结束*/ return(0); /*此时应多加1,第一项为1,故加2*/int fac(int i)int fac=1; while(i) fac*=i; i-; return (fac);4.16:/*功能:相加直到加数的绝对值小于0.0001作者:漏网之鱼日期:20070806修改
19、:版本:无*/ #include #include #define mix 0.0001 int main(void) int sign=1,n=1; float sum=0,term=1; while(fabs(term)mix) n+; sign=-sign; sum+=term; term=(float)sign/n; printf(the sum is %f,sum); return(0);4.17:/*功能:相加直到加数的绝对值小于0.00001作者:漏网之鱼日期:20070806修改:版本:无*/ #include #include #define mix 0.00001 int
20、main(void) float x,term,sum=0; int n=1;printf(enter x please:n); scanf(%f,&x); term=x;printf(term is %fn,term);while(fabs(term)mix) sum+=term; term=-term*x*x/(n+1)*(n+2); n+=2; printf(the sum is %f,sum); return(0);4.18:/*功能:打印所有水仙花数作者:漏网之鱼日期:20070807修改:版本:无*/ #include int main(void) int high,mid,low
21、,n;for(n=100;n1000;n+) low=n%10; mid=(n/10)%10; /*除以10并以10取模,得十位数*/ high=n/100; /*整数除,得百位数*/ if(n=low*low*low+high*high*high+mid*mid*mid) printf(the flower number is %dn,n); return(0);4.19:/*功能:计算一个数字的各位之和作者:漏网之鱼日期:20070807修改:版本:无*/#include#includeint main(void)int num,sum;printf(enter the number pl
22、ease:n); scanf(%d,&num); num=fabs(num); /*这儿破坏了原始数据*/sum=num%10+(num/10)%10+(num/100)%10+num/1000; printf(the sum is %d,sum); return(0);4.20:/*功能:找出符合的最小数作者:漏网之鱼日期:20070807版本:修改:无*/ #include int main(void)int x;for(x=1;x+) if(x%5=1&x%6=5&x%7=4&x%11=10) break;printf(the number is %d,x);return(0);4.21
23、:/*功能:计算符合题目的台阶数作者:漏网之鱼日期:20070807修改:版本:无*/ #include int main(void)int x;for(x=1;x10000;x+)/*也许你已经猜出来了,这个题目并不只有一个答案,我的*/ /*意见,可以看一下世界最高楼,然后计算一下该楼的台阶*/ if(x%2=1&x%3=2&x%5=4&x%6=5&x%7=0)/*数,然后说,故台阶可能*/ printf(the number is %dn,x);/*是X,Y或Z个当然,注明是在一定时间*/ /*内成立的,过了就又有更高的楼了.*/ return(0);4.22:/*功能:计算符合题目的数
24、目作者:漏网之鱼日期:20070807修改:版本:无*/ #include int main(void)int whi,red,bla;for(whi=0;whi4;whi+) for(red=0;red4;red+) for(bla=0;bla5;bla+) if(whi+red+bla=8) printf(the white is %d,the red is,whi);/*没什么,就是*/ printf( %d,the black is %dn,red,bla);/*一行写不下了*/ return(0);4.23:/*功能:算出符合题目的鸡和兔的数目作者:漏网之鱼日期:20070807修改
25、:版本:无*/ #include int main(void) int chi,rab;for(chi=0;chi98;chi+) rab=98-chi; if(chi+chi+rab+rab+rab+rab=386)/*你要知道,计算机算加法快一些.*/ printf(%d chickens and %d rabbits has 386 legsn,chi,rab); return(0);4.24:/*功能:计算中的数学问题作者:漏网之鱼日期:20070807修改:版本:无*/#includeint main(void)int male,fema,chick;for(male=0;male2
26、0;male+)for(fema=0;fema33;fema+) chick=100-male-fema; if(male*5+fema*3+chick/3=100)/*加法快一些,但太长了.*/ printf(it can buy %d males,male); printf(%d famales,%d chicksn,fema,chick); return(0);4.25:/*功能:计算1.5元可以兑换的分币作者:漏网之鱼日期:20070807修改:版本:无*/#includeint main(void)int nfive,ntwo,none; for(nfive=1;nfive29;nf
27、ive+) for(ntwo=1;ntwo74;ntwo+) none=100-nfive-ntwo; if(nfive*5+ntwo*2+none=150) printf(%d five cents,%d ,nfive,ntwo); printf(two cents,%d one centsn,none); return(0);4.26:/*功能:打印九九乘数表作者:漏网之鱼日期:20070807修改:版本:无*/#includeint main(void) int i,j;for(i=1;i10;i+)printf(%dt,i); printf(n); /*这句不在for中*/for(i=
28、1;i10;i+) printf(-t); printf(n); /*这句也是*/for(i=1;i10;i+) for(j=1;j10;j+) if(ji) printf( t); else printf(%dt,i*j); printf(n);/*这句并不在内部的for中*/ getch();4.27:(1):/*功能:打印一个图案作者:漏网之鱼日期:20070807修改:版本:无*/#includeint main(void)int i,j; for(i=0;i4;i+) for(j=i;j3;j+) printf( ); /*先打空格*/ for(j=1;j7;j+) printf(*
29、); /*再打星号*/ printf(n) ; return(0);(2):/*功能:打印一个图案作者:漏网之鱼日期:20070807修改:版本:无*/#includeint main(void)int i,j; for(i=1;i9;i+=2) for(j=1;j=i;j+) printf(*); printf(n); return(0);(3):/*功能:打印一个图案作者:漏网之鱼日期:20070807修改:版本:无*/#includeint main(void)int i,j;for(i=0;i=3;i+) /*星号个数从0到3*/ for(j=0;ji+4;j+)/*每行打印的数目递增
30、,比i多4*/ if (j3-i) /*先多后少*/ printf( ); else printf(*); printf(n); return(0);4.28:/*功能:打印九九乘根表作者:漏网之鱼日期:20070807修改:版本:无*/#include#includeint main(void) int i,j; printf( ); /*这儿是四个空格*/for(i=0;i=9;i+) printf(%d,i); printf( );/*而这儿是七个*/ /*解释一下,本来我不想用这么多变态的空格*/printf(n); /*然而,我如何用t也整不出书上的效果*/for(i=0;i10;i
31、+) /*本程序环境为windows xp sp2+win-tc1.9.00*/ printf(%d ,i); for(j=0;j=i)/*是,则返回1,否则为0*/ break; /*即查看一下,该数不为1时,可整除的数是否只*/ /*有它本身,如是,则是素数*/ if (n!=i) isprime=0; return(isprime);5.5:/*功能:本程序计算几个数的阶乘,其中阶乘的各数须大于0作者:漏网之鱼日期:20070807修改:版本:无*/#includeint fac(int i) int num=1; if(i!=1) num=i*fac(i-1); return(num);int main(void)float p;int k,m;printf(enter k and m please(positive&mk):n);scanf(%d%d,&k,&m);if(k1|m1|(m-k)b) factor=maxcommonfactor(a-b,b); else factor=maxcommonfactor(b-a,a); return(factor); 5.7:/*功能:重复参数的调用,从大到小依次输出参数的公约数,如果为1,则输出-1.作者:漏网之鱼日期:20070810修改:版本:无*/int commonfactors(int a,int b) i
限制150内