C語言譚浩強(qiáng)(第三版)及課后習(xí)題答案_第1頁
C語言譚浩強(qiáng)(第三版)及課后習(xí)題答案_第2頁
C語言譚浩強(qiáng)(第三版)及課后習(xí)題答案_第3頁
C語言譚浩強(qiáng)(第三版)及課后習(xí)題答案_第4頁
C語言譚浩強(qiáng)(第三版)及課后習(xí)題答案_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、c語言設(shè)計(jì)譚浩強(qiáng)第三版的課后習(xí)題答案15請參照本章例題,編寫一個(gè)c程序,輸出以下信息:main()printf( * n);printf(n);printf( very good! n);printf(n);printf( *n);1.6編寫一個(gè)程序,輸入a b c三個(gè)值,輸出其中最大者。解:main()int a,b,c,max;printf(請輸入三個(gè)數(shù)a,b,c:n);scanf(%d,%d,%d,&a,&b,&c);max=a;if(maxmax=b;if(maxmax=c;printf(最大數(shù)為:%d,max);第三章3.3 請將下面各數(shù)用八進(jìn)制數(shù)和十六進(jìn)制數(shù)表示:(1)10 (2)

2、32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003解:十 八 十六 (10)=(12)=(a) (32)=(40)=20 (75)=(113)=4b (-617)=(176627)=fd97 -111=177621=ff91 2483=4663=963 -28654=110022=9012 21003=51013=520b3.5字符常量與字符串常量有什么區(qū)別?解:字符常量是一個(gè)字符,用單引號括起來。字符串常量是由0個(gè)或若干個(gè)字符而成,用雙引號把它們括起來,存儲時(shí)自動(dòng)在字符串最后加一個(gè)結(jié)束符號0.3.6寫出以下程序的運(yùn)行結(jié)果:#includevo

3、id main()char c1=a,c2=b,c3=c,c4=101,c5=116;printf(a%c b%ctc%ctabcn,c1,c2,c3);printf(tb%c %cn,c4,c5);解:程序的運(yùn)行結(jié)果為:aabb cc abc a n3.7將china譯成密碼.密碼規(guī)律:用原來的字母后面第4個(gè)字母代替原來的字母,例如,字母a后面第4個(gè)字母是e,用e代替a.因此,china應(yīng)譯為glmre.請編一程序,用賦初值的議程使c1,c2,c3,c4,c5分別變成g,1,m,r,e,并輸出.main()char c1=c,c2=h,c3=i,c4=n,c5=a;c1+=4;c2+=4;c

4、3+=4;c4+=4;c5+=4;printf(密碼是%c%c%c%c%cn,c1,c2,c3,c4,c5);3.8例3.6能否改成如下:#includevoid main()int c1,c2;(原為 char c1,c2)c1=97;c2=98;printf(%c%cn,c1,c2);printf(%d%dn,c1,c2);解:可以.因?yàn)樵诳奢敵龅淖址秶鷥?nèi),用整型和字符型作用相同.3.9求下面算術(shù)表達(dá)式的值.(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)(2)(float)(a+b)/2+(int)x%(int)y=3.5(設(shè)a=2,b=3,x=

5、3.5,y=2.5)3.10寫出下面程序的運(yùn)行結(jié)果:#includevoid main()int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%dn,i,j,m,n);解:結(jié)果: 9,11,9,10第4章4.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=a,c2=b.想得到以下的輸出格式和結(jié)果,請寫出程序要求輸出的結(jié)果如下:a= 3 b= 4 c= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3.60 y+z=-1.20 z+x=-2.40u= 51274 n

6、= 128765c1=a or 97(ascii)c2=b or 98(ascii)解:main()int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1=a;c2=b;printf(n);printf(a=%2d b=%2d c=%2dn,a,b,c);printf(x=%8.6f,y=%8.6f,z=%9.6fn,x,y,z);printf(x+y=%5.2f y=z=%5.2f z+x=%5.2fn,x+y,y+z,z+x);printf(u=%6ld

7、 n=%9ldn,u,n);printf(c1=%c or %d(ascii)n,c1,c2);printf(c2=%c or %d(ascii)n,c2,c2);4.5請寫出下面程序的輸出結(jié)果.結(jié)果:57 5 767.856400,-789.12396267.856400 ,-789.123962 67.86,-789.12,67.856400,-789.123962,67.856400,-789.1239626.785640e+001,-7.89e+002a,65,101,411234567,4553207,d68765535,17777,ffff,-1computer, com4.6用下

8、面的scanf函數(shù)輸入數(shù)據(jù),使a=3,b=7,x=8.5,y=71.82,c1=a,c2=a,問在鍵盤上如何輸入?main()int a,b;float x,y;char c1,c2;scanf(a=%d b=%d,&a,&b);scanf( x=%f y=%e,&x,&y);scanf( c1=%c c2=%c,&c1,&c2);解:可按如下方式在鍵盤上輸入:a=3 b=7x=8.5 y=71.82c1=a c2=a說明:在邊疆使用一個(gè)或多個(gè)scnaf函數(shù)時(shí),第一個(gè)輸入行末尾輸入的回車被第二個(gè)scanf函數(shù)吸收,因此在第二三個(gè)scanf函數(shù)的雙引號后設(shè)一個(gè)空格以抵消上行入的回車.如果沒有這個(gè)

9、空格,按上面輸入數(shù)據(jù)會出錯(cuò),讀者目前對此只留有一初步概念即可,以后再進(jìn)一步深入理解.4.7用下面的scanf函數(shù)輸入數(shù)據(jù)使a=10,b=20,c1=a,c2=a,x=1.5,y=-3.75,z=57.8,請問在鍵盤上如何輸入數(shù)據(jù)?scanf(%5d%5d%c%c%f%f%*f %f,&a,&b,&c1,&c2,&y,&z);解:main()int a,b;float x,y,z;char c1,c2;scanf(%5d%5d%c%c%f%f,&a,&b,&c1,&c2,&x,&y,&z);運(yùn)行時(shí)輸入:10 20aa1.5 -3.75 +1.5,67.8注解:按%5d格式的要求輸入a與b時(shí),要先

10、鍵入三個(gè)空格,而后再打入10與20。%*f是用來禁止賦值的。在輸入時(shí),對應(yīng)于%*f的地方,隨意打入了一個(gè)數(shù)1.5,該值不會賦給任何變量。4.8設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長,圓面積,圓球表面積,圓球體積,圓柱體積,用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說明,取小數(shù)點(diǎn)后兩位數(shù)字.請編程.解:main()float pi,h,r,l,s,sq,vq,vz;pi=3.1415926;printf(請輸入圓半徑r圓柱高h(yuǎn):n);scanf(%f,%f,&r,&h);l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=4.0/3.0*pi*r*r*r;vz=pi*

11、r*r*h;printf(圓周長為: =%6.2fn,l);printf(圓面積為: =%6.2fn,s);printf(圓球表面積為: =%6.2fn,sq);printf(圓球體積為: =%6.2fn,vz);4.9輸入一個(gè)華氏溫度,要求輸出攝氏溫度,公式為c=5/9(f-32),輸出要有文字說明,取兩位小數(shù).解: main()float c,f;printf(請輸入一個(gè)華氏溫度:n);scanf(%f,&f);c=(5.0/9.0)*(f-32);printf(攝氏溫度為:%5.2fn,c);第五章 邏輯運(yùn)算和判斷選取結(jié)構(gòu)5.4有三個(gè)整數(shù)a,b,c,由鍵盤輸入,輸出其中最大的數(shù).main

12、()int a,b,c;printf(請輸入三個(gè)數(shù):);scanf(%d,%d,%d,&a,&b,&c);if(a if(b printf(max=%dn,c); else printf(max=%dn,b);else if(a printf(max=%dn,c); else printf(max-%dn,a);方法2:使用條件表達(dá)式.main()int a,b,c,termp,max; printf( 請輸入 a,b,c: ); scanf(%d,%d,%d,&a,&b,&c); printf(a=%d,b=%d,c=%dn,a,b,c); temp=(ab)?a:b; max=(tempc

13、)? temp:c; printf( a,b,c中最大數(shù)是%d,max);5.5 main()int x,y;printf(輸入x:);scanf(%d,&x);if(x1) y=x; printf(x-%d,y=x=%d n,x,y); else if(x100|s9999) place=5;else if(num999) place=4;else if(num99) place=3;else if(num9) place=2;else place=1;printf(place=%dn,place);printf(每位數(shù)字為:);ten_thousand=num/10000;thousand

14、=(num-tenthousand*10000)/1000;hundred=(num-tenthousand*10000-thousand*1000)/100;ten=(num-tenthousand*10000-thousand*1000-hundred*100)/10;indiv=num-tenthousand*10000-thousand*1000-hundred*100-ten*10;switch(place)case 5:printf(%d,%d,%d,%d,%d,tenthousand,thousand,hundred,ten,indiv); printf(n反序數(shù)字為:); pr

15、intf(%d%d%d%d%dn,indiv,ten,hundred,thousand,tenthousand); break;case 4:printf(%d,%d,%d,%d,thousand,hundred,ten,indiv); printf(n反序數(shù)字為:); printf(%d%d%d%dn,indiv,ten,hundred,thousand); break;case 3:printf(%d,%d,%dn,hundred,ten,indiv); printf(n反序數(shù)字為:); printf(%d%d%dn,indiv,ten,hundred);case 2:printf(%d,

16、%dn,ten,indiv); printf(n反序數(shù)字為:); printf(%d%dn,indiv,ten);case 1:printf(%dn,indiv); printf(n反序數(shù)字為:); printf(%dn,indiv); 5.81.if語句main()long i; float bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; scanf(%

17、ld,&i); if(i=1e5)bonus=i*0.1; else if(i=2e5)bonus=bon1+(i-100000)*0.075; else if(i=4e5)bonus=bon2+(i-200000)*0.05; else if(i=6e5)bonus=bon4+(i-400000)*0.03; else if(i10)branch=10; switch(branch) case 0:bonus=i*0.1;break; case 1:bonus=bon1+(i-100000)*0.075;break; case 2: case 3:bonus=bon2+(i-200000)*

18、0.05;break; case 4: case 5:bonus=bon4+(i-400000)*0.03;break; case 6: case 7 case 8: case 9:bonus=bon6+(i-600000)*0.015;break; case 10:bonus=bon10+(i-1000000)*0.01; printf(bonus=%10.2f,bonus); 5.9 輸入四個(gè)整數(shù),按大小順序輸出.main() int t,a,b,c,d; printf(請輸入四個(gè)數(shù):); scanf(%d,%d,%d,%d,&a,&b,&c,&d); printf(nn a=%d,b=%

19、d,c=%d,d=%d n,a,b,c,d); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(ad) t=a;a=d;d=t; if(bc) t=b;b=c;c=t; if(bd) t=b;b=d;d=t; if(cd) t=c;c=d;d=t;printf(n 排序結(jié)果如下: n);printf( %d %d %d %d n,a,b,c,d);5.10塔main()int h=10;float x,y,x0=2,y0=2,d1,d2,d3,d4;printf(請輸入一個(gè)點(diǎn)(x,y):);scanf(%f,%f,&x,&y);d1=(x-x0)*(x-x

20、0)+(y-y0)(y-y0);d2=(x-x0)*(x-x0)+(y+y0)(y+y0);d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);if(d11 & d21 & d31 & d41)h=0;printf(該點(diǎn)高度為%d,h);第六章 循環(huán)語句6.1輸入兩個(gè)正數(shù),求最大公約數(shù)最小公倍數(shù).main()int a,b,num1,num2,temp;printf(請輸入兩個(gè)正整數(shù):n);scanf(%d,%d,&num1,&num2);if(num1temp=num1;num1=num2;num2=temp;a=num

21、1,b=num2;while(b!=0) temp=a%b; a=b; b=temp; printf(它們的最大公約數(shù)為:%dn,a);printf(它們的最小公倍數(shù)為:%dn,num1*num2/2);6.2輸入一行字符,分別統(tǒng)計(jì)出其中英文字母,空格,數(shù)字和其它字符的個(gè)數(shù).解:#include main()char c;int letters=0,space=0,degit=0,other=0;printf(請輸入一行字符:n);scanf(%c,&c);while(c=getchar()!=n)if(c=a&ca&c=0&c=9)digit+;elseother+;printf(其中:字母

22、數(shù)=%d 空格數(shù)=%d 數(shù)字?jǐn)?shù)=%d 其它字符數(shù)=%dn,letters,space,digit,other);6.3求s(n)=a+aa+aaa+aaa之值,其中工是一個(gè)數(shù)字.解:main()int a,n,count=1,sn=0,tn=0;printf(請輸入a和n的值:n);scanf(%d,%d,&a,&n);printf(a=%d n=%d n,a,n);while(count=n)tn=tn+a;sn=sn+tn;a=a*10;+count;printf(a+aa+aaa+=%dn,sn);6.4 求1+2!+3!+4!+20!.main()float n,s=0,t=1;for

23、(n=1;n=20;n+)t=t*n;s=s+t;printf(1!+2!+20!=%en,s);6.5 main()int n1=100,n2=50,n3=10;float k;float s1=0,s2=0,s3=0;for(k=1;k=n1;k+)s1=s1+k;for(k=1;k=n2;k+)s2=s2+k*k;for(k=1;k=n3;k+)s3=s3+1/k;printf(總和=%8.2fn,s1+s2+s3);6.6水仙開花main()int i,j,k,n;printf( 水仙花數(shù)是:);for(n=100;n1000;n+)i=n/100;j=n/10-i*10;k=n%10

24、;if(i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf(%d,n);printf(n);6.7完數(shù)main()#include m 1000main()int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;int i,j,n,s;for(j=2;j1) printf(%d,%d,k0,k1);if(n2) printf(,%d,k2);if(n3) printf(,%d,k3);if(n4) printf(,%d,k4);if(n5) printf(,%d,k5);if(n6) printf(,%d,k6);if(n7) printf(,%d,k7);

25、if(n8) printf(,%d,k8);if(n9) printf(,%d,k9);printf(n); 方法二:此題用數(shù)組方法更為簡單.main()static int k10;int i,j,n,s;for(j=2;j=1000;j+)n=-1;s=j;for(i=1;iif(j%i)=0)n+;s=s-i;kn=i; if(s=0)printf(%d是一個(gè)完數(shù),它的因子是:,j);for(i=0;iprintf(%d,ki);printf(%dn,kn);6.8 有一個(gè)分?jǐn)?shù)序列:2/1,3/2,5/3,8/5求出這個(gè)數(shù)列的前20項(xiàng)之和.解: main()int n,t,number=

26、20;float a=2,b=1,s=0;for(n=1;n=number;n+)s=s+a/b;t=a,a=a+b,b=t;printf(總和=%9.6fn,s);6.9球反彈問題main()float sn=100.0,hn=sn/2;int n;for(n=2;n0)x1=(x2+1)*2;x2=x1;day-;printf(桃子總數(shù)=%dn,x1); 6.12#includemath.hmain()float x,x0,f,f1; x=1.5; do x0=x; f=(2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x=x0-f/f1; while(fabs

27、(x-x0)=1e-5); printf(x=%6.2fn,x); 6.13#includemath.hmain()float x0,x1,x2,fx0,fx1,fx2; do scanf(%f,%f,&x1,&x2); fx1=x1*(2*x1-4)*x1+3)-6; fx2=x2*(2*x2-4)*x2+3)-6; while(fx1*fx20); do x0=(x1+x2)/2; fx0=x0*(2*x0-4)*x0+3)-6; if(fx0*fx1)=1e-5); printf(x0=%6.2fn,x0);6.14打印圖案main()int i,j,k; for(i=0;i=3;i+)

28、 for(j=0;j=2-i;j+) printf( ); for(k=0;k=2*i;k+) printf(*); printf(n); for(i=0;i=2;i+) for(j=0;j=i;j+) printf( ); for(k=0;k=4-2*i;k+) printf(*); printf(n); 6.15乒乓比賽main()char i,j,k;for(i=x;i=z;i+)for(j=x;j=z;j+) if(i!=j)for(k=x;kaj) min=j; temp=ai; ai=amin; amin=temp;printf(n排序結(jié)果如下:n);for(i=0;iprintf

29、(%5d,ai);7.3對角線和:main()float a33,sum=0;int i,j;printf(請輸入矩陣元素:n);for(i=0;i3;i+) for(j=0;j3;j+) scanf(%f,&aij); for(i=0;i3;i+) sum=sum+aii; printf(對角元素之和=6.2f,sum);7.4插入數(shù)據(jù)到數(shù)組main()int a11=1,4,6,9,13,16,19,28,40,100;int temp1,temp2,number,end,i,j;printf(初始數(shù)組如下:);for (i=0;iend)a10=number;else for(i=0;i

30、number) temp1=ai; ai=number; for(j=i+1;j11;j+) temp2=aj; aj=temp1; temp1=temp2; break; for(i=0;j11;i+) printf(a%6d,ai);7.5將一個(gè)數(shù)組逆序存放。#define n 5main() int an=8,6,5,4,1,i,temp;printf(n 初始數(shù)組:n);for(i=0;iprintf(%4d,ai);for(i=0;i temp=ai; ai=an-i-1; an-i-1=temp;printf(n 交換后的數(shù)組:n);for(i=0;i printf(%4d,ai)

31、;7.6楊輝三角#define n 11main() int i,j,ann; for(i=1;i aii=1; ai1=1; for(i=3;i for(j=2;j=i-1;j+) aij=ai01j-1+ai-1j; for(i=1;i for(j=1;jmax) max=aij; maxj=j; for (k=0,flag1=1;k if(maxakmax) flag1=0; if(flag1) printf(n第%d行,第%d列的%d是鞍點(diǎn)n,i,maxj,max); flag2=1; if(!flag2) printf(n 矩陣中無鞍點(diǎn)! n);7.9變量說明:top,bott:查找

32、區(qū)間兩端點(diǎn)的下標(biāo);loca:查找成功與否的開關(guān)變量.#include#define n 15main() int i,j,number,top,bott,min,loca,an,flag; char c; printf(輸入15個(gè)數(shù)(aii-1)n); scanf(%d,&a0); i=1; while(i scanf(%d,&ai); if(ai=ai-1) i+; esle printf(請重輸入ai); printf(必須大于%dn,ai-1); printf(n); for(i=0;i printf(%4d,ai); printf(n); flag=1; while(flag) pri

33、ntf(請輸入查找數(shù)據(jù):); scanf(%d,&number); loca=0; top=0; bott=n-1; if(numberan-1) loca=-1; while(loca=0)&(top=bott) min=(bott+top)/2; if(number=amin) loca=min; printf(%d位于表中第%d個(gè)數(shù)n,number,loca+1); else if(number bott=min-1; else top=min+1; if(loca=0|loca=-1) printf(%d不在表中n,number); printf(是否繼續(xù)查找?y/n!n); c=ge

34、tchar(); if(c=n|c=n) flag=0; 7.10main() int i,j,uppn,lown,dign,span,othn; char text380; uppn=lown=dign=span=othn=0; for(i=0;i3;i+) printf(n請輸入第%d行:n,i); gets(texti); for(j=0;j=a & textij=a & textij=1 & textij=9) dign+=1; else if(textij= ) span+=1; else othn+=1; for(i=0;i3;i+) printf(%s=n,texti); pri

35、ntf(大寫字母數(shù):%dn,uppn); printf(小寫字母數(shù):%dn,lown); printf(數(shù)字個(gè)數(shù):%dn,dign); printf(空格個(gè)數(shù):%dn,span); printf(其它字符:%dn,othn); 7.11main() static char a5=*,*,*,*,*; int i,j,k; char space= ; for(i=0;i=5;i+) printf(n); for(j=1;j=3*i;j+) printf(%lc,space); for(k=0;k=a)&(chi=a)&(chi=z) trani=26+96-chi+1+96;else trani

36、=chi; i+;n=i;printf(n原文是:);for(i=0;iputchar(trani);7.13main() char s180,s240; int i=0,j=0; printf(n請輸入字符串1:); scanf(%s,s1); printf(n請輸入字符串2:); scanf(%s,s2); while(s1i!=0) i+;while(s2j!=0) s1i+=s2j+;s1i=0;printf(n連接后字符串為:%s,s1); 7.14#includemain()int i,resu; char s1100,s2100; printf(請輸入字符串1:n); gets(

37、s1); printf(n 請輸入字符串2:n); gets(s2); i=0; while(s1i=s2i) & (s1i!=0)i+; if(s1i=0 & s2i=0)resu=0; else resu=s1i-s2i; printf( %s與%s比較結(jié)果是%d,s1,s2,resu);7.15#includemain() char from80,to80; int i; printf(請輸入字符串); scanf(%s,from); for(i=0;iv) t=u;u=v;v=t; a=u;b=v; while(r=b%a)!=0) b=a;a=r; return(a); lcd(u,v,h) int u,v,h; int u,v,h,l; scanf(%d,%d,&u,&v); h=hcf(u,v); printf(h.c.f=%dn,h); l=lcd(u,v,h); printf(l.c.d

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論