C語言設(shè)計譚浩強第三版的課后習題答案_第1頁
C語言設(shè)計譚浩強第三版的課后習題答案_第2頁
C語言設(shè)計譚浩強第三版的課后習題答案_第3頁
C語言設(shè)計譚浩強第三版的課后習題答案_第4頁
C語言設(shè)計譚浩強第三版的課后習題答案_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、http:/ c 語言設(shè)計譚浩強第三版的課后習題答案15 請參照本章例題,編寫一個c 程序,輸出以下信息:main() printf( * n); printf(n); printf( very good! n); printf(n); printf( *n); 1.6 編寫一個程序,輸入a b c三個值,輸出其中最大者。解: main() int a,b,c,max; printf( 請輸入三個數(shù)a,b,c:n); scanf(%d,%d,%d,&a,&b,&c); max=a; if(maxmax=b; if(maxmax=c; printf( 最大數(shù)為: %d,m

2、ax); 第三章3.3 請將下面各數(shù)用八進制數(shù)和十六進制數(shù)表示:( 1) 10 ( 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=520b 3.5 字符常量與字符串常量有什么區(qū)別?解:字符常量是一個字符,用單引號括起來。字符串常量是由0 個或若

3、干個字符而成,用雙引號把它們括起來,存儲時自動在字符串最后加一個結(jié)束符號0. 3.6 寫出以下程序的運行結(jié)果: #include void 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); 解 :程序的運行結(jié)果為: aabb cc abc a n 3.7 將 china 譯成密碼 .密碼規(guī)律 :用原來的字母后面第4 個字母代替原來的字母, 例如 ,字母 a 后面第4 個字母是 e, 用 e 代替 a. 因此 ,china 應(yīng)譯為 glmre.

4、請編一程序 ,用賦初值的議程使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; c3+=4; c4+=4; c5+=4; printf( 密碼是 %c%c%c%c%cn,c1,c2,c3,c4,c5); 3.8 例 3.6能否改成如下: #include void main() int c1,c2;(原為char c1,c2) c1=97; c2=98; printf(%c%cn,c1,c2); printf(%d%dn,c1,c2); 解 :可以 .因為在可輸出的字符范

5、圍內(nèi),用整型和字符型作用相同. 3.9 求下面算術(shù)表達式的值. (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=3.5,y=2.5) 3.10 寫出下面程序的運行結(jié)果: #include void 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

6、=51274,n=128765,c1=a,c2=b.想得到以下的輸出格式和結(jié)果,請寫出程序要求輸出的結(jié)果如下: a= 3 b= 4 c= 5 x=1.200000,y=2.400000,z=-3.600000 x+y= 3.60 y+z=-1.20 z+x=-2.40 u= 51274 n= 128765 c1=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

7、; 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 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 7 67.856400,-789.123962

8、67.856400 ,-789.123962 67.86,-789.12,67.856400,-789.123962,67.856400,-789.123962 6.785640e+001,-7.89e+002 a,65,101,41 1234567,4553207,d687 65535,17777,ffff,-1 computer, com 4.6 用下面的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

9、,&b); scanf( x=%f y=%e,&x,&y); scanf( c1=%c c2=%c,&c1,&c2); 解 :可按如下方式在鍵盤上輸入: a=3 b=7 x=8.5 y=71.82 c1=a c2=a 說明 :在邊疆使用一個或多個scnaf函數(shù)時 ,第一個輸入行末尾輸入的回車 被第二個 scanf函數(shù)吸收 ,因此在第二三個 scanf 函數(shù)的雙引號后設(shè)一個空格以抵消上行入的 回車 .如果沒有這個空格,按上面輸入數(shù)據(jù)會出錯,讀者目前對此只留有一初步概念即可,以后再進一步深入理解. 4.7 用下面的scanf函數(shù)輸入數(shù)據(jù)使a=10,b=20,

10、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); 運行時輸入:10 20aa1.5 -3.75 +1.5,67.8 注解:按 %5d 格式的要求輸入a 與 b 時,要先鍵入三個空

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

12、*r; vq=4.0/3.0*pi*r*r*r; vz=pi*r*r*h; printf( 圓周長為 : =%6.2fn,l); printf( 圓面積為 : =%6.2fn,s); printf( 圓球表面積為 : =%6.2fn,sq); printf( 圓球體積為 : =%6.2fn,vz); 4.9 輸入一個華氏溫度,要求輸出攝氏溫度,公式為c=5/9(f-32), 輸出要有文字說明, 取兩位小數(shù) . 解 : main() float c,f; printf( 請輸入一個華氏溫度:n); scanf(%f,&f); c=(5.0/9.0)*(f-32); printf( 攝氏溫

13、度為 :%5.2fn,c); 第五章邏輯運算和判斷選取結(jié)構(gòu)5.4 有三個整數(shù)a,b,c,由鍵盤輸入 ,輸出其中最大的數(shù). main() int a,b,c; printf( 請輸入三個數(shù) :); scanf(%d,%d,%d,&a,&b,&c); if(a if(bprintf(max=%dn,c); else printf(max=%dn,b); else if(a printf(max=%dn,c); else printf(max-%dn,a); 方法 2:使用條件表達式. main() int a,b,c,termp,max; printf( 請輸入a,b,c:

14、 ); scanf(%d,%d,%d,&a,&b,&c); printf(a=%d,b=%d,c=%dn,a,b,c); temp=(ab)?a:b; max=(tempc)? 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)

15、place=3; else if(num9) place=2; else place=1; printf(place=%dn,place); printf( 每位數(shù)字為 :); ten_thousand=num/10000; thousand=(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*10

16、00-hundred*100-ten*10; switch(place) case 5:printf(%d,%d,%d,%d,%d,tenthousand,thousand,hundred,ten,indiv); printf(n 反序數(shù)字為 :); printf(%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,hundre

17、d,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,%dn,ten,indiv); printf(n 反序數(shù)字為 :); printf(%d%dn,indiv,ten); case 1:printf(%dn,indiv); printf(n 反序數(shù)字為 :); printf(%dn,indiv); 5.8 1.if 語句main() long i; float bonus,bon

18、1,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(%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.

19、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)*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-1000

20、000)*0.01; printf(bonus=%10.2f,bonus); 5.9 輸入四個整數(shù) ,按大小順序輸出. main() int t,a,b,c,d; printf( 請輸入四個數(shù):); scanf(%d,%d,%d,%d,&a,&b,&c,&d); printf(nn a=%d,b=%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

21、;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( 請輸入一個點 (x,y):); scanf(%f,%f,&x,&y); d1=(x-x0)*(x-x0)+(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(d

22、11 & d21 & d31 & d41) h=0; printf( 該點高度為 %d,h); 第六章循環(huán)語句6.1 輸入兩個正數(shù),求最大公約數(shù)最小公倍數(shù). main() int a,b,num1,num2,temp; printf( 請輸入兩個正整數(shù):n); scanf(%d,%d,&num1,&num2); if(num1 temp=num1; num1=num2; num2=temp; a=num1,b=num2; while(b!=0) temp=a%b; a=b; b=temp; printf( 它們的最大公約數(shù)為:%dn,a); printf

23、( 它們的最小公倍數(shù)為:%dn,num1*num2/2); 6.2 輸入一行字符,分別統(tǒng)計出其中英文字母,空格 ,數(shù)字和其它字符的個數(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+; else other+; printf( 其中 :字母數(shù) =%d 空格數(shù) =%d 數(shù)字數(shù) =%d 其它字符數(shù)=% dn,lette

24、rs,space, digit,other); 6.3 求 s(n)=a+aa+aaa+ +aa a之值 ,其中工是一個數(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

25、,t=1; for(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;n

26、1000;n+) i=n/100; j=n/10-i*10; k=n%10; 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 1000 main() 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(,

27、%d,k5); if(n6) printf(,%d,k6); if(n7) printf(,%d,k7); 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;i if(j%i)=0) n+; s=s-i; kn=i; if(s=0) printf(%d是一個完數(shù) ,它的因子是 :,j); for(i=0;iprintf(%d,ki); printf(

28、%dn,kn); 6.8 有一個分數(shù)序列:2/1,3/2,5/3,8/5 求出這個數(shù)列的前20 項之和 . 解 : main() int n,t,number=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.h m

29、ain() 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(x-x0)=1e-5); printf(x=%6.2fn,x); 6.13 #includemath.h main() 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+

30、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+) 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; fo

31、r(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(%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);

32、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;inumber) 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 將一個數(shù)組逆序存放。#define n 5 main()

33、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); 7.6 楊輝三角#define n 11 main() 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=ai

34、j; maxj=j; for (k=0,flag1=1;k if(maxakmax) flag1=0; if(flag1) printf(n第%d 行 ,第 %d 列的 %d 是鞍點 n,i,maxj,max); flag2=1; if(!flag2) printf(n 矩陣中無鞍點! n); 7.9 變量說明 :top,bott:查找區(qū)間兩端點的下標;loca:查找成功與否的開關(guān)變量. #include #define n 15 main() int i,j,number ,top,bott,min,loca,an,flag; char c; printf( 輸入 15 個數(shù) (aii-1)

35、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) printf( 請輸入查找數(shù)據(jù):); scanf(%d,&number); loca=0; top=0; bott=n-1; if(numberan-1) loca=-1; while(loca=0)&(top=b

36、ott) min=(bott+top)/2; if(number=amin) loca=min; printf(%d位于表中第 %d 個數(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=getchar(); if(c=n|c=n) flag=0; 7.10 main() int i,j,uppn,lown,dign,span,othn; char text380; uppn=lown

37、=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); printf( 大寫字母數(shù) :%dn,uppn); printf( 小寫字母數(shù) :%dn,lown); printf( 數(shù)字個數(shù) :%dn,dign); printf(

38、 空格個數(shù) :%dn,span); printf( 其它字符 :%dn,othn); 7.11 main() 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=chi; i+; n=i; printf(n原文是 :); for(i=0;iputchar(trani); 7.13

39、main() 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 #include main() int i,resu; char s1100,s2100; printf( 請輸入字符串1:n); gets(s1); printf(n 請輸入字符串2:n); gets(s2); i=0; while

40、(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 #include main() 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; sc

41、anf(%d,%d,&u,&v); h=hcf(u,v); printf(h.c.f=%dn,h); l=lcd(u,v,h); printf(l.c.d=%dn,l); return(u*v/h); main() 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=%dn,l); 8.2 求方程根#include float x1,x2,disc,p,q; greater_than_zero(a,b) float a,b; x1

42、=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); equal_to_zero(a,b) float a,b; x1=x2=(-b)/(2*a); smaller_than_zero(a,b) float a,b; p=-b/(2*a); q=sqrt(disc)/(2*a); main() float a,b,c; printf(n輸入方程的系數(shù)a,b,c:n); scanf(%f,%f,%f,&a,&b,&c); printf(n 方程是: %5.2f*x*x+%5.2f*x+%5.2f=0n,a,b,c); disc=b

43、*b-4*a*c; printf( 方程的解是:n); if(disc0) great_than_zero(a,b); printf(x1=%5.2ftx2=%5.2fnn,x1,x2); else if(disc=0) zero(a,b); printf(x1=%5.2ftx2=%5.2fnn,x1,x2); else small_than_zero(a,b,c); printf(x1=%5.2f+%5.2fitx2=%5.2f-%2.2fin,p,q,p,q); 8.3 素數(shù)#includemath.h main() int number; scanf(%d,&number); i

44、f(prime(number) printf(yes); else printf(no); int prime(number) int number; int flag=1,n; for(n=2;n if(number%n=0) flag=0; return(flag); 8.4 #define n 3 int arraynn; convert(array) int array33; int i,j,t; for(i=0;i for(j=i+1;j t=arrayij; arrayij=arrayji; arrayji=t; main() int i,j; printf( 輸入數(shù)組元素:n);

45、 for(i=0;i for(j=0;j scanf(%d,&arrayij; printf(n 數(shù)組是 :n); for(i=0;i for(j=0;j printf(%5d,arrayij); printf(n); convert(array); printf( 轉(zhuǎn)置數(shù)組是 :n); for(i=0;i for(j=0;j printf(%5d,arrayij); printf(n); 8.5 main() char str100; printf( 輸入字符串 :n); scanf(%s,str); inverse(str); printf( 轉(zhuǎn)換后的字符串是: %sn,str);

46、 inverse(str) char str; char t; int i,j; for(i=0,j=strlen(str);i t=stri; stri=stri-1; stri-1=t; 8.6 char concatenate(string1,string2,string); char string1,string2,string; int i,j; for(i=0;string1i!=0;i+) stringi=string1i; for(j=0;string2j!=0;j+) stringi+j=string2j; stringi+j=0; main() char s1100,s21

47、00,s100; printf(n 輸入字符串1:n); scanf(%s,s1); printf( 輸入字符串2:n); scanf(%s,s2); concatenate(s1,s2,s); printf( 連接后的字符串:%sn,s); 8.8 main() char str80; printf( 請輸入含有四個數(shù)字的字符串:n); scanf(%s,str); insert(str); insert(str) char str; int i; for(i=strlen(str);i0;i-) str2*i=stri; str2*i-1= ; printf(n 結(jié)果是 :n %s,str

48、); 8.9 #includemath.h int alph,digit,space,others; main() char text80; gets(text); alph=0,digit=0,space=0,others=0; count(text); printf(nalph=%d,digit=%d,space=%d,others=%dn,alph,digit,space,others); count(str) char str; int i; for(i=0;stri!=0;i+) if(stri=a&stri=a&stri=0&stri=a & c=a

49、 & c=z) return(1); else return(0); int longest (string) char string; int len=0,i,length=0,flag=1,place,point; for(i=0;ilength) length=len; place=point; len=0; return(place); main() int i; char line100; printf( 輸入一行文本n); gets(line); printf(n最長的單詞是:); for(i=longest(line);alphabctic(linei);i+) prin

50、tf(%c,linei; printf(n); 8.11 #include #define n 10 char strn; main() int i,flag; for(flag=1;flag=1;) printf(n 輸入字符串 ,長度為 10:n); scanf(%s,&str); if(strlen(str)n) printf( 超過長度 ,請重輸 !); else flag=0; sort(str); printf(n 排序結(jié)果 :); for(i=0;i printf(%c,stri); sort(str) char strn; int i,j; char t; for(j=

51、1;j for(i=0;(i if(stristri+1) t=stri; stri=stri+1; stri+1=t; 8.12 #include #include float solut(a,b,c,d) float a,b,c,d; float x=1,x0,f,f1; do x0=x; f=(a*x0+b)*x0+c)*x0+d; f1=(3*a*x0+2*b)*x0+c; x=x0-f/f1; while(fabs(x-x0)=1e-5); return(x); main() float a,b,c,d; scanf(%f,%f,%f,%f,&a,&b,&c,

52、&d); printf(x=%10.7fn,solut(a,b,c,d); 8.13 #include main() int x,n; float p(); scanf(%d,%d,&n,&x); printf(p%d(%d)=%10.2fn,n,x,p(n,x); float p(tn,tx) int tn,tx; if(tn=0) return(1); else if(tn=1) return(tx); else return(2*tn-1)*tx*p(tn-1),tx)-(tn-1)*p(tn-2),tx)/tn); 8.14 #include stdio.h #

53、define n 10 #define m 5 float scorenm; float a_stun,a_corm; main() int i,j,r ,c; float h; float s_diff(); float highest(); r=0; c=1; input_stu(); avr_stu(); avr_cor(); printf(n number class 1 2 3 4 5 avr); for(i=0;i printf(nno%2d,i+1); for(j=0;j printf(%8.2f,scoreij); printf(%8.2f,a_stui); printf(nc

54、lassavr); for(j=0;j printf(%8.2f,a_corj); h=highest(&r,&c); printf(nn%8.2f %d %dn,h,r,c); printf(n %8.2fn,s_diff(); input_stu() int i,j; float x; for(i=0;i for(j=0;j scanf(%f,&x); scoreij=x; avr_stu() int i,j; float s; for(i=0;i for(j=0,s=0;j s+=scoreij; a_stui=s/5.0; avr_cor() int i,j;

55、float s; for(j=0;j for(i=0,s=0;i s+=scoreij; a_corj=s/(float)n; float highest(r,c) int *r ,*c; float high; int i,j; high=score00; for(i=0;i for(j=0;j if(scoreijhigh) high=scoreij; *r=i+1; *c=j+1; return(high); float s_diff() int i,j; float sumx=0.0,sumxn=0.0; for(i=0;i sumx+=a_stui*a_stui; sumxn+=a_

56、stui; return(sumx/n-(sumxn/n)*(sumxn/n); 8.15 #include #define n 10 void input_e(num,name) int num; char namen8; int i; for(i=0;i scanf(%d,&numi); gets(namei); void sort(num,name) int num; char namen8; int i,j,min,temp1; char temp28; for(i=0;i min=i; for(j=i;j if(numminnumj)min=j; temp1=numi; nu

57、mi=nummin; nummin=temp1; strcpy(temp2,namei); strcpy(namei,namemin); strcpy(namemin,temp2); for(i=0;i printf(n%5d%10s,numi,namei); void search(n,num,name) int n,num; char namen8; int top,bott,min,loca; loca=0; top=0; bott=n-1; if(nnumn-1) loca=-1; while(loca=0)&(top=0 & c=a&c=a&c=0&a

58、mp;si=a&si=a&si=f) n=n*16+si-a+10; return(n); 8.17 #include void counvert(n) int n; int i; if(i=n/10)!=0) convert(i); putchar(n%10+0); main() int number; printf(n 輸入整數(shù) :); scanf(%d,&number); printf(n 輸出是 : ); if(number=3) days=days+1; printf( 是該年的 %d 天 .n,days); static int day_tab13=0,31

59、,28,31,30,31,30,31,31,30,31,30,31 int(sum_day(month,day) int month,day; int i; for(i=1;i day+=day_tabi; return(day); int leap(year) int year; int leap; leap=year%4=0&year%100!=0|year%400=0; return(leap); 第九章編譯預(yù)處理9.1 #define swap(a,b) t=b;b=a;a=t main() int a,b,t; printf( 請輸入兩個整數(shù)a,b:); scanf(%d,%

60、d,&a,&b); swap(a,b); printf( 交換結(jié)果為 :a=%d,b=%dn,a,b); 9.2 #define surplus(a,b) (a)%(b) main() int a,b; printf( 請輸入兩個整數(shù)a,b:); scanf(%d,%d,&a,&b); printf(a,b 相除的余數(shù)為:%dn,surplus(a,b); 9.3 #include #defin s(a,b,c) (a+b+c)/2) #define area(a,b,c) (sqrt(s(a,b,c)*(s(a,b,c)-a)*(s(a,b,c)-b)*(s(

61、a,b,c)- c) main() float a,b,c; printf( 請輸入三角形的三條邊:); scanf(%f,%f,%f,&a,&b,&c); if(a+bc & a+cb & b+ca) printf( 其面積為 :%8.2f.n,area(a,b,c); else printf( 不能構(gòu)成三角形!); 9.4 #define leap_year(y) (y%4=0) & (y%100!=0)|(y%400=0) main() int year; printf(n 請輸入某一年:); scanf(%d,&year); if(leap_year(year) printf(%d是閏年 .n,year); else printf(%d不是閏年 .n,year); 9.5 解 :展開后 : printf( #118alue=%formatt,x); printf( #118alue=

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論