譚浩強c語言習題答案_第1頁
譚浩強c語言習題答案_第2頁
譚浩強c語言習題答案_第3頁
譚浩強c語言習題答案_第4頁
譚浩強c語言習題答案_第5頁
已閱讀5頁,還剩50頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章3.3請將下面各數用八進制數和十六進制數表示:(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-Hl=177621=ff912483=4663=963-28654=110022=901221003=51013=520b3.5字符常量與字符串常量有什么區別?解:字符常量是一個字符,用單引號括起來。字符串常量是由0個或若干個字符而成,用雙引號把它們括起來,存儲時自動在字符串最后加一個結束符號3.6寫出以下程序的運行結果:#includevoidmain()(charcl='",c2=b',c3='c',c4=70r,c5=716';printf(na%cb%c\tc%c\tabc\nH,cl,c2,c3);printf(M\t\b%c%c\n",c4,c5);解:程序的運行結果為:aabbccabcAN將”China”譯成密碼.密碼規律:用原來的字母后面第4個字母代替原來的字母,例如,字母“A”后面第4個字母是“E",用”E“代替”A”.因此“China”應譯為“Glmre”.請編一程序,用賦初值的議程使cl,c2,c3,c4,c5分別變成并輸出.main(){charcl=nCn,c2=,,hn,c3=,,i,,,c4='n,,c5=,a,;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;prinlf("密碼是%c%c%c%c%c\n”,cl,c2,c3,c4,c5);)例3.6能否改成如下:#includevoidmain()intcl,c2;(原為charcl,c2)cl=97;c2=98;printf(',%c%c\nM,cl,c2);printf(M%d%d\n",cl,c2);}解:可以.因為在可輸出的字符范圍內,用整型和字符型作用相同.求下面算術表達式的值.(l)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(設a=2,b=3,x=3.5,y=2.5)寫出下面程序的運行結果:#includevoidmain()(inti,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);I解:結果:9,11,9,10第4章.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=宜,c2=b.想得到以下的輸出格式和結果,請寫出程序要求輸出的結果如下:a=3b=4c=5x=i.200000,y=2.400000,z=-3.600000x+y=3.60y+z=-1.20z+x=-2.40u=51274n=128765cl='a'or97(ASCII)c2=B'or98(ASCII)解:main()(inta,b,c;longintu,n;floatx,y,z;charcl,c2;a=3;b=4;c=5;x=l.2;y=2.4;z=-3.6;u=51274;n=128765;cl='a';c2='b';printf("\n");printf("a=%2db=%2dc=%2d\nu,a,b,c);printf(Mx=%8.6f,y=%8.6f,z=%9.6f\n*\x,y,z);printf(Mx+y=%5.2fy=z=%5.2fz+x=%5.2f\n”,x+y,y+z,z+x);printf(nu=%61dn=%91d\nn,u,n);printf("cl='%c'or%d(ASCII)\nu,cl,c2);printf(',c2=,%c,or%d(ASCII)\n,',c2,c2);1請寫出下面程序的輸出結果.結果:575767.856400,-789.12396267.856400,-789.12396267,86,-789.12,67.856400,-789.123962,67.856400.-789.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,fiffifrlCOMPUTER,COM用下面的scanf函數輸入數據,使a=3,b=7,x=8.5,y=7L82,cl=A,c2=,a;間在鍵盤上如何輸入?main()(inta,b;floatx,y;charcl,c2;scanf("a=%db=%d,&a,&b);scanf(Mx=%fy=%eH,&x,&y);scanf(ncl=%cc2=%cn,&c1,&c2);)解:可按如下方式在鍵盤上輸入:a=3b=7x=8.5y=71.82c1=Ac2=a說明:在邊疆使用I一個或多個scnaf函數時,第一個輸入行末尾輸入的“回車"被第二個scanf函數吸收,因此在第二E個scanf函數的雙引號后設一個空格以抵消上行入的"回車".如果沒有這個空格,按上面輸入數據會出錯,讀者目前對此只留有一初步概念即可,以后再進一步深入理解.用下面的scanf函數輸入數據使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,請問在鍵盤上如何輸入數據?scanf("%5d%5d%c%c%f%>f%*f%f",&a,&b,&cl,&c2,&y,&z);解:main()inta,b;floatx,y,z;charcl,c2;scanf(H%5d%5d%c%c%f%f;&a,&b,&cl,&c2,&x,&y,&z);}運行時輸入:10 20Aal.5-3.75+1.5,67.8注解:按%5d格式的要求輸入a與b時,要先鍵入三個空格,而后再打入10與20。%*f是用來禁止賦值的。在輸入時,對應于%*f的地方,隨意打入了一個數1.5,該值不會賦給任何變量。設圓半徑=1.5,圓柱高h=3,求圓周長,圓面枳,圓球表面積,圓球體積,圓柱體積,用scanf輸入數據,輸出計算結果,輸出時要求有文字說明,取小數點后兩位數字.請編程.解:main。(floatpi,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*r;vq=4.0/3.0*pi*r*r*r;vz=pi*r*r*h;printf("圓周長為: =%6.2f\n",l);printf("圓面積為: =%6.2f\n",s);printf("圓球表面積為:=%6.2f\n",sq);printf("圓球體積為: =%6.2f\n",vz);)輸入一個華氏溫度,要求輸出攝氏溫度,公式為C=5/9(F-32),輸出要有文字說明,取兩位小數.解:main()(floatc,f;printf("請輸入一個華氏溫度scanf("%F,&f);c=(5.0/9.0)*(f-32);printf("攝氏溫度為:%5.2f\n",c);第五章邏輯運算和判斷選取結構有三個整數a,b,c,由鍵盤輸入,輸出其中最大的數.main()(inta,b,c;printf("請輸入三個數:");scanf(M%d,%d,%d';&a,&b,&c);if(aif(bprintf("max=%d\nn,c);elseprintf("max=%d\nn,b);elseif(aprintf(Mmax=%d\nM,c);elseprintf("max-%d\nf\a);)方法2:使用條件表達式.main(){inta,b,c,tennp,max;printf("請輸入A,B,C:”);scanf("%d,%d,%du,&a,&b,&c);printf("A=%d,B=%d,C=%d\n:a,b,c);temp=(a>b)?a:b;max=(temp>c)?temp:c;printf(" A,B,C中最大數是%dJ,max);}main(){intx,y;printf("輸入x:");scanf(,,%d,\&x);if(x<l){y=x;pnntf(HX-%d,Y=X=%d\n*x,y);)elseif(x<10){y=2*x-l;printf(nX=%d,Y=2*X-l=%d\n",x,y);}else{y=3*x-l1;printf(MX=5d,Y=3*x-ll=%d\n'\x,y);(習題5-6:)自己寫的已經運行成功!不同的人有不同的算法,這些答案僅供參考!818#includevoidmain()(floats,i;chara;scanf(H%f;&s);while(s>100lls<0)(printf("輸入錯誤!error!”);scanf(u%r,&s);)i=s/10;switch((int)i)(case10:case9:a='A';break;case8:a=B';break;case7:a=C';break;case6:a=,D,;break;case5:case4:case2:case0:a='E';)printf(M%c",a);}http://818/給一個不多于5位的正整數,要求:1.求它是幾位數2.分別打印出每一位數字3.按逆序打印出各位數字.例如原數為321,應輸出123.main()(longintnum;intindiv,ten,hundred,housand,tenthousand,place;prinlf("請輸入一個整數(0-99999):");scanf("%ld",&num);if(num>9999)place=5;elseif(num>999)place=4;elseif(num>99)place=3;elseif(num>9)place=2;elseplace=l;printf("place=%d\n",place);printf("每位數字為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*1000-hundred*100-ten*l0;switch(place){case5:printf("%d,%d,%d,%d,%d",tenthousand,thousand,hundred,ten,indiv);printf("\n反序數字為:");printf(',%d%d%d%d%d\n,,,indiv,ten,hundred,thousand,tenthousand);break;case4:printf(,,%d,%d,%d,%d,\thousand,hundred,ten,indiv);printf(M\n反序數字為:");printf(',%d%d%d%d\n'\indiv,ten,hundred,thousand);break;case3:printf(',%d,%d,%d\n",hundred,ten,indiv);printf(n\n反序數字為:");printf(1,%d%d%d\n,\indiv,ten,hundred);case2:printf(H%d,%d\n",ten,indiv);printf(M\n反序數字為:");printf(n%d%d\n'\indiv,ten);casel:printf("%d\n'\indiv);printf("\n反序數字為:");printf("%d\n",indiv);l.if語句main(){longi;floatbonus,bon1,bon2,bon4,bon6,bon10;bonl=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf(M%ldM,&i);if(i<=1e5)bonus=i*0.1;elseif(i<=2e5)bonus=bonl+(i-l00000)*04075;elseif(i<=4e5)bonus=bon2+(i-200000)*0.05;elseif(i<=6e5)bonus=bon4+(i-400000)*0.03;elseif(i<=1e6)bonus=bon64-(i-600000)*0.015;elsebonus=bon10+(i-l000000)*0.01;printf("bonus=%10.2f\bonus);)用switch語句編程序main()(longi;floatbonus,bon1,bon2,bon4,bon6,bon10;intbranch;bonl=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf(M%ldn,&i);branch=i/l00000;if(branch>10)branch=10;switch(branch){case0:bonus=i*0.1;break;case1:bonus=bunl+(i-100000)*0.075;break;case3:bonus=bon2+(i-200000)*0.05;break;case4:case5:bonus=bon4+(i-400000)*0.03;break;case9:bonus=bon6+(i-600000)*0.015;break;case10:bonus=bon10+(i-1000000)*0.01;)printf(nbonus=%10.2f\bonus);}http://818/輸入四個整數,按大小順序輸出.main(){intt?a,b,c,d;printf("請輸入四個數門;scanf(M%d,%d,%d,%dn,&a,&b,&c,&d);printfC'NnXna=%d,b=%d,c=%d,d=%d\n';a,b,c,d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;)if(c>d){t=c;c=d;d=t;}printf("\n排序結果如下:\n");printf("%d%d%d%d\n",a,b,c,d);)塔main()(inth=10;floatx,y,x0=2,y0=2,d1,d2,d3,d4;printf("請輸入一個點(x,y):");scanf(H%f,%r,&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(dl>l&&d2>l&&d3>l&&d4>l)h=0;printf("該點高度為%。》));http://818/第六章循環語句輸入兩個正數,求最大公約數最小公倍數.main()(inta,b,num1,num2,temp;primf("請輸入兩個正整數:\n");scanf(,,%d,%d,',&numl,&num2);if(numl{temp=numl;numl=num2;num2=temp;)a=numl,b=num2;while(b!=O)(temp=a%b;a=b;b=temp;)primf("它們的最大公約數為:%d\n”,a);printf("它們的最小公倍數為:%d\n”,numl*num2/2);)輸入一行字符,分別統計出其中英文字母,空格,數字和其它字符的個數.解:#include< >main()(charc;intIetters=0,space=0,degit=0,other=0;printf("請輸入一行字符An");scanf("%c",&c);while((c=getchar())!=*\n,)(if(c>=,a'&&c<=,z,llc>,A,&&c<=,Z,)letters++;elseif(c==*)space++;elseif(c>='0'&&c<=,9,)digit++;elseother++;}printf("其中:字母數=%d空格數=%d數字數=%d其它字符數二%d\n",letters,space,digit,other);)求s(n)=a+aa+aaa+???+aa???a之值,其中工是一個數字.解:main()inta,n,count=1,sn=O,tn=O;printf("請輸入a和n的值:\n");scanf(M%d,%dM,&a,&n);printf("a=%dn=%d\n",a,n);while(count<=n)(tn=tn+a;sn=sn+tn;a=a*10;++count;)printf(na+aa+aaa4-...=%d\n",sn);)求l+2!+3!+4!+…+20!.main()(floatn,s=0,t=l;for(n=l;nv=20;n++)(t=t*n;s=s+t;)printf("1!+2!+...+20!=%e\n",s);)main()(intNl=l00,N2=50,N3=10;floatk;floats1=0,s2=0,s3=0;for(k=l;kv=Nl;k++)/*計算1到100的和*/(sl=sl+k;}for(k=l;kv=N2;k++)/*計算1到50各數平方和N(s2=s2+k*k;}for(k=l;k<=N3;k++)(s3=s3+l/k;printf(“總和=%8.2朋”,§1+§2+§3);水仙開花main()inti,j,k,n;printf("'水仙花'數是:");for(n=100;n<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(H\nn);}完數main()includeM1000/*定義尋找范圍*/main()(intk0,kl,k2,k3,k4,k5,k6,k7,k8,k9;inti,j,n,s;for(j=2;j<=M;j++)(n=0;s=j;for(i=l;i{if((j%i)==0)(if((j%i)==0)(n++;s=s-i;switch(n)/*將每個因子賦給k0,kl-k9*/(k0=i;break;kl=i;break;k2=i;break;k3=i;break;k4=i;break;k5=i;break;k6=i;break;k7=i;break;k8=i;break;k9=i;break;if(s==O)printf("%d是一個‘完數’,它的因子是”,j);if(n>l)printf("%d,%d”,kO,kl);if(n>2)printf(,,,%d,',k2);if(n>3)printf(",%d",k3);if(n>4)printf(M,%dM,k4);if(n>5)printf(,,,%d,,,k5);if(n>6)printf(',,%d,',k6);if(n>7)printf(",%d",k7);if(n>8)printf(",%d",k8);if(n>9)printf(",%d",k9);printf(M\nM);})方法二:此題用數組方法更為簡單.main()(staticintk[10];inti,j,n,s;for(j=2;j<=1000;j++){n=-l;s=j;for(i=l;i{if((j%i)==O)(n++;s=s-i;k[n]=i;/*將每個因子賦給k0,kl...k9*/}}if(s==O){printf(M%d是一個完數,它的因子是:j);for(i=0;iprintf(H%d,H,k[i]);printf(M%d\nH,k[n]);有一個分數序列21,3/2,5/3,8/5……求出這個數列的前20項之和.解:main()(intn,t,number=20;floata=2,b=l,s=0;for(n=1;n<=number;n++)(s=s+a/b;t=a,a=a+b,b=t;}printf(“總和=%9.6朋”聲);球反彈問題main()floatsn=100.0,hn=sn/2;intn;for(n=2;n<=10;n++)(sn=sn+2*hn;/*第n次落地時共經過的米數*/hn=hn/2;/*第n次反跳高度*/)printf("第10次落地時共經過%1*米\nH,sn);printf("第10次反彈%£米.5”由11);)猴子吃桃main(){intday,xl,x2;day=9;x2=l;while(day>0)(xl=(x2+l)*2;x2=xl;day-;)printf(“桃子總^=%d\nH,x1);6.12#include"math.h,,main(){floatx,x0,f,f1;x=1.5;do{x0=x;f=((2*x0-4)*x0+3)*x0-6;fl=(6*x0-8)*x0+3;x=x0-f/fl;}while(fabs(x-xO)>=1e-5);printf(',x=%6.2f\n',,x);#include"math.h,,main(){floatxO,x1,x2,fx0,fxl,fx2;do{scanf(n%f,%f',&xl,&x2);fxl=xl*((2*xl-4)*xl+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;)while(fx1*fx2>0);do{x0=(xl+x2)/2;fxO=xO*((2*xO-4)*xO+3)-6;if((fx0*fxl)<0){x2=x0;fx2=fx0;}else{xl=xO;fxl=fxO;while(fabs(fx0)>=le-5);printf(MxO=%6.2f\n'\xO);http://818/6.14打印圖案main(){inti,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(HM);for(k=0;k<=2*i;k++)printf(M*M);printfC^*');)for(i=0;i<=2;i++){for(j=0;j<=i;j++)printfC");for(k=0;k<=4-2*i;k++)printf(M*n);prinlf("\n");htlp://818/6.15乒乓比賽main(){chari,j,k;/*i是a是對手j是b是對手;k是c的對手*/fbr(i=,x,;i<=,z';i++)for(j='x,;j<='z';j++)(if(i!=j)for(k=,x,;k<=,z,;k++)(if(i!=k&&j!=k){if(i!=x'&&k!='x'&&k!='z')printf("順序為:\na?%c\tb??%c\tc??%c\n”,i,j,k);用篩選法求100之內的素數./*用篩選法求100之內的素數#include#defineN101main(){inti,j,line,a[N];for(i=2;ifor(i=2;ifor(j=i+1;j{if(a[ij!=0&&a[j]!=0)if(aU]%a[i]=0)a(jJ=0;printf(H\nH);for(i=2,line=0;i{if(a[i]!=0){printf(”%5d”,a[i]);line++;if(line==10){printf(u\nn);line=0;}用選擇法對10個數排序./*選擇法排序.*/#defineN10main(){inti,j,min,temp,a[N];/*輸入數據*/printf(”請輸入十個數:\n“);for(i=0;i{printf("a[%d]=H,i);scanf(M%dn,&a[i]);}printf(M\nn);for(i=0;iprintf(H%5dH,a[i]);printf(M\nM);/*排序*/for(i=0;i{min=i;for(j=i+l;jif(a[min]>a[j])min=j;temp=a[i];a[i]=a[min];a[min]=temp;)/*輸出*/printf("\n排序結果如下An");for(i=0;iprintf("%5d",a[i]);http://818/對角線和:/*計算矩陣對角線元素之和*/main()(floata[3][3],sum=O;inti,j;printf("請輸入矩陣元素:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(n%r,&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf("對角元素之和=6.2F,sum);)插入數據到數組/*插入數據到數組*/main(){inta[ll]={1,4,6,9,13,16,19,28,40,100};inttemp1,temp2,number,end,i,j;printf("初始數組如下for(i=0;i<10;i++)printf("%5d”,a[i]);printf(M\nM);printf("輸入插入數據scanf(,'%d",&number);end=a[9];if(number>end)a[10]=number;else{for(i=0;i<10;i++){if(a[i]>number){templ=a[i];a[i]=number;fbr(j=i+1;j<11y++){temp2=a[j];a[j]=templ;templ=temp2;}break;for(i=Ou<ll;i++)printf("a%6d',,a[i]);)將一個數組逆序存放。/*數組逆序存放*/#defineN5main(){inta[N]={8,6,5,4J},i,temp;printf(M\n初始數組:\n");for(i=0;iprintf(',%4d,',a[i]);for(i=0;i{temp=a[i];a[i]=a[N-i-l];a[N-i-l]=temp;)printfC'\n交換后的數組:\n”);for(i=0;iprintf("%4d",a[i]);}楊輝三角/*打印楊輝三角形*/#defineN11main(){inti,j,a[N][N];for(i=l;i(a[i][i]=l;a[i][l]=l;)for(i=3;i for(j=2;j<=i-1;j++)a[i]U]=a[i01]U-l]+a[i-l]U];for(i=l;i {for(j=1;j<=i;j++)printf("%6d”,a[i][j];printf(M\nM);)printf(n\nu);)7.8鞍點/*查找鞍點*/#defineN10#defineM10main(){inti,j,k,m,n,flagl,ilag2,a[N][M],max,maxi,maxj;printfCAn輸入行數n:M);scanf(n%dH,&n);printf("\n輸入列數m:M);scanf(”%d”,&m);for(i=0;i{printf("第%d行?for(j=0;jscanf("%d”,&a[i][j];)for(i=0;i{for(j=0;jprintf(“%5d”閔pritf(M\nM);}flag2=0;for(i=0;i{max=a[i][0];for(j=0;jif(a[i][j]>max){max=a[i]|j];maxj=j;)for(k=0,flagl=l;kif(max>a[k][max])flag1=0;if(flagl){printf("\n第%d行,第%d歹I」的%d是鞍點\n",i,maxj,max);flag2=l;if(!flag2)printf("\n矩陣中無鞍點!\n");http://818/7.9變量說明:top,bolt:查找區間兩端點的下標;loca:查找成功與否的開關變量./*折半查找*/#include#defineN15main(){intij,number,top,bott,min,loca,a[N],flag;charc;for(i=0;i<=N;i++)scanf(”%d”,&a[i]);flag=l;while(flag){scanf(”%d”,&number);loca=0;top=0;bott=N-l;if((numbera[N-l]))loca=-l;while((loca=0)&&(top<=bott)){min=(bott+top)/2;if(number==a[min]){loca=min;printf("number=%d,loca=%d\nH,number,loca+1);)elseif(number bott=min-l;elsetop=min+l;)if(loca==Ollloca==-1)printf("%dnotintable\n",number);printf("continueY/Nory/n\n");c=getchar();if(c==,N,llc==n,)flag=O;)http://818/7.10/*統計字符數*/main(){inti,j,uppn,lown,dign,span,othn;chartext[3][8O];uppn=lown=dign=span=othn=0;for(i=0;i<3;i++){printf(H\n請輸入第%(1行:gets(text[i]);for(j=0;j<80&&text[i][j]!=\0';j++){if(text[i][j]>='A,&&text[i][j]<='Z,)uppn+=l;elseif(text[i][j]>=,a,&&text[i][j]<='z,)lown+=1;elseif(text[i][j]>=,r&&text[i][j]<='9')dign+=l;elseif(text[i][j]=*1)span+=1;elseothn+=l;)}for(i=0;i<3;i++)printf("%s=n",text「]);printf("大寫字母數:%d\n",uppn);printf("小寫字母數:%d\iT,lown);printf("數字個數:%d\n”,dign);printf("空格個數:%d\n",span);printf("其它字符:%d\n”,othn);/*打印圖案*/main(){staticchara[5]={'**',*,'**'};inti,j,k;charspace、';for(i=0;i<=5;i++){printf(n\nn);for(j=l;j<=3*i;j++)printf(,,%lc'\space);for(k=0;k<=5;k++)printf(M%3cM,a[k];http://818//*譯電文*/#includemain(){inti,n;charch[80],tran[80];printf("請輸入字符gets(ch);printf(M\n密碼是%c”,ch);i=0;whileCchli]!^){if((ch[i]>=,A,)&&(ch[i]<='Z'))tran[i]=26+64-ch[i]+1+64;elseif((ch[i]>='a,)&&(ch[i]<='z'))tran[i]=26+96-ch[i]+l+96;elsetran[i]=ch[i];i++;}n=i;printf("\n原文是:");for(i=0;iputchar(tran(i]);/*連接兩個字符串(不用'stracf)*/main(){charsl[80],s2[40];inti=0,j=0;prinlf("\n請輸入字符串1:M);scanf(n%sH,sl);printf("\n請輸入字符串2:");scanf(,'%s,\s2);while(sl[i]!=W)i++;while(s2[j]!=,\0')sl[i++]=s2|j++];printf(H\n連接后字符串為:%s*sl);/*字符串比較*/#includemain(){inti,resu;charsl[100],s2[100];printf("請輸入字符串l:\iT);gets(sl);printf(H\n請輸入字符串2:\n");gets(s2);i=0;while((sl[i]==s2[i])&&(sl[i]!=V)'))i++;if(sl[iJ==,\O'&&s2[i]==\0')resu=0;elseresu=sl[i]-s2[ij;printf(M%s與%$比較結果是%d”,sl,s2,resu);}http://818//*字符串復制*/#includemain()(charfrom[80],to[80];inti;printf("請輸入字符串)scanf(,,%s,',from);for(i=0;i<=strlen(from);i++)to[i]=from[i];printf("復制字符串為:%s\n”,to);)第八章函數8.1(最小公倍數=11*丫/最大公約數.)hcf(u,v)intu,v;(inta,b,t,r;if(u>v){t=u;u=v;v=t;}a=u;b=v;while((r=b%a)!=O){b=a;a=r;}retum(a);)lcd(u,v,h)intu,v,h;{intu,v,h,l;scanf(M%d,%dn,&u,&v);h=hcf(u,v);printf(HH.C.F=%d\nM,h);l=lcd(u,v,h);printf(nL.C.d=%d\nM);){retum(u*v/h);)main(){intu,v,h,l;scanf(M%d,%dn,&u,&v);h=hcf(u,v);printf(MH.C.F=%d\nn,h);l=lcd(u,v,h);printf(ML.C.D=%d\nMJ);)求方程根#include<math.h>floatxl,x2,disc,p,q;greater_than_zero(a,b)floata,b;{xl=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);)equal_to_zero(a,b)floata,b;{x1=x2=-b/(2*a);}smaller_than_zero(a,b)floata,b;{p=-b/(2*a);q=sqrt(-disc)/(2*a);}main(){floata,b,c;scanf(H%f,%f,%r,&a,&b,&c);disc=b*b-4*a*c;if(fabs(disc)<=le-5){equal_to_zero(a,b);printf(Mx1=%5.2f\tx2=%5.2f\n",x1,x2);)elseif(disc>0){greater_than_zero(a,b);printf(Hx1=%5.2f\tx2=%5.2f\nu,xl,x2);}else{smaller_than_zero(a,b);printf(Hxl=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\nH,p,q,p,q);素數/*判斷整數是否為素數*/#include<stdio.h>main(){intnumber;scanf(n%dn,&number);if(prime(number))printf(nyesH);elseprintf("no");}intprime(number)intnumber;{intilag=l,n;for(n=2;n<number/2&&flag==1;n++)if(number%n==O)flag=O;retum(flag);/*矩陣的轉置*/#defineN3intarray[N][N];convert(array)intarray[3][3];{intij,t;for(i=0;i<N;i++)for(j=i+l;j<N;j++){t=array[i][j];array[ij[j]=array[j]li];array[j][i]=t;)}main(){inti,j;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf(,'%d,,,&array[i][j]);convert(array);for(i=0;i<N;i++){printf(',\nn);for(j=0;j<N;j++)printf(,,%5d,',array[i][j]);/*字符串反序存放*/main()(charstr[100];printf("輸入字符串An");scanf(,,%s,,,str);inverse(str);printf("轉換后的字符串是:%s\n\str);}inverse(str)charstr[];(chart;inti,j;for(i=0,j=strlen(str);i{t=str[i];str[i]=str[i-l];str[i-l]=t;)/*字符串聯接*/charconcatenate(stringl,string2,string);charstring1[],string2[],string[J;(inti,j;for(i=0;string1[i]!=10';i++)stringli]=stringl[i];for(j=0;string2[j]!=、0';j++)string[i+j]=string2|j];string[i+j]=W;)main()(charsl[100],s2[100],s[100];printf("\n輸入字符串1:\n");scanf(n%sn,sl);prinlff輸入字符串2:\n");scanf(n%sn,s2);concatenate(s1,s2,s);printf("連接后的字符串:%s\nM,s);/*在四個數字符中加空格*/main()(charstr[80];printf(”請輸入含有四個數字的字符串:\nM);scanf(M%sM,str);insert(str);}insert(str)charstr[];(inti;for(i=strlen(str);i>0;i-){str[2*i]=str[i];strl2*i-lj=*1printf(H\n結果是:\n %s'\str);)/*統計字母數字空格和其它字符數*/#includeMmath.hnintalph,digit,space,others;main(){chartext[80];gets(text);alph=0,digit=0,space=0,others=0;count(text);printf(H\nalph=%d,digit=%d,space=%d,others=%d\iiM,alph,digit,space,others);)count(str)charstr[];{inti;for(i=0;str[i]!='0';i++)if((str[i]>=,a'&&str[i]<=,z,)ll(str[i]>=,A,&&str[i]<='Z,))alph++;elseif(str[i]>=,0'&&str[i]<='9')digit++;elseif(strcmp(str[i];*)==0)space++;elseothers++;/*輸出文本行的最長單詞*/intalphabetic(c);charc;(if((c>='a,&&c<=,z,ll(c>=,A,&&cv='Z'))return(1);elsereturn(O);}/*尋找最長的詞*/intlongest(string)charstring[];(intlen=0,iJength=0,flag=1,place,point;for(i=0;i<=strlen(string);i++)if(alphabctic(string[i]))if(flag)point=i;flag=O;)elselen++;else{Aag=l;iflen>length){length=len;place=point;len=O;}}retum(place);)main()(inti;charline[100];printf("輸入一行文本\n”);gets(line);printf("\n最長的單詞是:");for(i=longest(line);alphabctic(line[i]);i++)printf(',%c,',line[i];printf('^\n^^);/*起泡法排序*/#include#defineN10charstr[N];main()for(flag=1;flag==1;)(printf(”\n輸入字符串,長度為10:\nM);scanf(”%s”,&slr);if(strlen(str)>N)printf("超過長度,請重輸!,elseflag=O;}sort(str);printf(H\n排序結果:");for(i=0;iprimf("%c”,slr[i]);}sort(str)charstr[N];(inti,j;chart;for(j=l;jfor(i=0;(iif(str[i]>str[i+1]){t=str[i];str[i]=str[i+l];str[i+l]=t;)}8.12#include#includefloatsolut(a,b,c,d)floata,b,c,d;{floatx=l,xO,f,fl;do{xO=x;f=((a*xO+b)*xO+c)*xO+d;fl=(3*a*x0+2*b)*x0+c;x=xO-f/fl;}while(fabs(x-xO)>=le-5);return(x);)main(){floata,b,c,d;scanf("%f,%f,%f,%f”,&a,&b,&c,&d);printf(',x=%10,7f\n,,,solut(a,b,c,d));)8.13#includemain(){intx,n;floatp();scanf(,,%d,%d,',&n,&x);printf('rP%d(%d)=%10.2f\n'\n,x,p(n,x));)floatp(tn,tx)inttn,tx;{if(tn==0)retum(l);elseif(tn==l)retum(tx);elseretum(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn);)8.14#include"stdio.h"#defineN10#defineM5floatscorelNJ[MJ;floata_stu[Nl,a_cor[Ml;main(){intij,r,c;floath;floats_diff();floathighest();uO;c=l;input_stu();avr_stu();avr_cor();printfCAnnumberclass12345avrH);for(i=0;i{printf(,,\nNO%2d'\i+l);for(j=0;jprintf(l,%8.2f,,score[i](jj);printf("%8,2fM,a_stu[i]);

printf("\nclassavru);for(j=0;jprintfC^S2f\a.corlj]);h=highest(&r,&c);printf(M\n\n%8.2f%d%d\nH,h,r,c);printf("\n%8.2f\n",s_diff());)input_stu(){inti,j;floatx;for(i=0;i{for(j=0;j{scanf(n%f;&x);score[i][j]=x;avr_stu(){inti,j;floats;for(i=0;i{for(j=0,s=0;ja_stu[i]=s/5.0;avr_stu(){inti,j;floats;for(i=0;i{for(j=0,s=0;ja_stu[i]=s/5.0;))avr_cor(){inti,j;floats;for(j=0;j{for(i=0,s=0;ia_cor|j]=s/(float)N;}}floathighest(r,c)int*r,*c;{floathigh;inti,j;high=score[0][0];for(i=0;ifor(j=0;j{high=score[i][j];*r=i+l;*c=j+l;)retum(high);}floats_diff(){inti,j;s+=score[i][j];s+=score[i][j];if(score[i][jj>high)floatsumx=0.0,sumxn=0.0;floatsumx=0.0,sumxn=0.0;for(i=0;i{sumx+=a_stu[ij*a_stu[i];sumxn+=a_stu[i];)return(sumx/N-(sumxn/N)*(sumxn/N));)8.15#include#defineN10voidinput_e(num,name)intnum[];charname[N][8];{inti;for(i=0;i{scanf("%d”,&num[i]);gets(name[i]);)}voidsort(num,name)intnum[];charname[N][8];{intij,min,tempi;chartemp2[8];for(i=0;i{min=i;for(j=i;jif(num[min]>num|j])min=j;templ=num[i];num[i]=num[min];num[min]=templ;strcpy(temp2,name[i]);strcpy(name[i],name[min]);strcpy(name[min],temp2);}for(i=0;iprintf(u\n%5d%10sn,num[i],name[i]);}voidsearch(n,num,name)intn,num[];charname[N][8];{inttop,bott,min,loca;loca=0;top=0;bott=N-l;if((nnum[N-l]))loca=-l;while((loca==0)&&(top<=bott)){min=(bott+top)/2;if(n==num[min]){loca=min;printf(',number=%d,name=%s\n",n,name[loca]);)elseif(nbott=min-l;elsetop=min+l;)if(loca==Ollloca==-1)printf("number=%disnotintable\n'\n);)main(){intnum[N],number,flag,c,n;charname[N][8];input_e(num,name);sort(num,name);for(flag=l;flag;){scanf(H%d'\&number);search(number,num,name);printf(,,continue?Y/N!M);c=getchar();if(c==,N,llc==,n,)flag=0;/*十六進制轉換為十進制*/#include#defineMAX1000main(){intc,i,flag,flag1;chart[MAX];i=0;flag=0;flag1=1;printf(H\n輸入十六進制數:");while((c=getchar())!=AO'&&i{ifc>='0'&&c<=,9'llc>='a,&&c<='fllc>='A,&&c<='F'){flag=l;t[i++]=c;t[i]='\O';printf("\n十進制數%d\n",htoi(t));printf("繼續嗎?");c=getchar();if(c==N,llc==,n')flag1=0;else{flag=0;i=0;printfCAn輸入卜六進制數htoi(s)chars[];{inti,n;n=0;for(i=0;s[i]!=l\0t;i++){if(s[i]>=,0,&&s[i]<=,9,)n=n*16+s[i]-'O';if(s[i]>='a,&&s[i]<=T)n=n*164-s[i]-'a'4-l0;if(s[i]>='A,&&s[i]<=F)n=n*16+s[i],A'+10;)retum(n);/*遞歸法將整數轉換成字符*/#includevoidcounvert(n)intn;{inti;if((i=n/10);=0)convert(i);putchar(n%10+'0);main(){intnumber;printf(n\n輸入整數scanf(M%dn,&number);printf(M\n輸出是:");if(number<0){putchar(,-1);number=-number;)convert(number);/*計算某晶為該年的第幾天*/main()(intyear,month,day;intdays;printf(M\n請輸入日期(年,月,日)\n”);scanf("%d,%d,%d,',&year,&month,&day);printf(n\n%d年%<1月%<1H",year,month,day);days=sum_day(month,day);if(leap(year)&&month>=3)days=days+1;printf("是該年的%d天.\n”,days);)staticintday_tab[l3]={0,31,28,31,30,31,30,31,31,30,31,30,31}int(sum_day(month,day)intmonth,day;|inti;for(i=l;i day+=day_tab[i];retum(day);intleap(year)intyear;intleap;leap=year%4==0&&year%100!=0llyear%400==0;retum(leap);第九章編譯預處理/*交換兩變量值*/#defineSWAP(a,b)t=b;b=a;a=tmain()printff請輸入兩個整數a,b:H);scanf(M%d,%d\&a,&b);SWAP(a,b);printf("交換結果為:a=%d,b=%d\n”,a,b);/*求兩個整數相除的余數*/#defineSURPLUS(a,b)((a)%(b))main()(inta,b;printf("請輸入兩個整數a,b:H);scanf("%d,%d,',&a,&b);printf(Ha,b相除的余數為:%d\n”,SURPLUS⑶b));)/*輸入三角形的三條邊,求其面積*/#include#definS(a,b,c)((a+b+c)/2)#defineAREA(a,b,c)(sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(s(a,b,c)-C)))main()(floata,b,c;printf("請輸入三角形的三條邊:");scanf(n%f,%f,%f\&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)printf("其面積為:%8.2f.\n\AREA(a,b,c));elseprimf("不能構成三角形!)/*判斷輸入年份是否為閏年*/#defineLEAP_YEAR(y)(y%4==0)&&(y%100!=0)ll(y%400==0)main()(intyear;printf(M\n請輸入某一年:");scanf(H%dM,&year);if(LEAP_YEAR(year))printf(n%d是閏年An”,year);elseprintf("%d不是閏年An",year);解:展開后:printf("&#l18alue=%format\t'*,x);printf(n&#l18alue=%format\t,\x);putchar('\n');printf(H&#l18alue=%format\t',);printf(,,&#l18alue=%format\t",x2);putchar(\n,);輸出結果:value=5.000000ormatvalue=5.000000ormatvalue=3.0000(K)ormatvalue=8.000000ormat9.8/*用函數方法,從三個數中找出最大值*/main()(inta,b,c;printf(”請輸入三個整數/);scanf("%d,%d,%d';&a,&b,&c);printf("三個之中最大值為:%d\n”,max(a,b,c));)max(x,y,z)intx,y,z;(intt;t=(x>y?x:y);retum(t>z?t:z);9.10/*翻譯電碼*/#include#defineMAX80#defineCHANGE1main()(charstr[MAX];inti;printf("請輸入文本行An”);scanf(n%sM,str);#if(CHANGE)(for(i=0;i{if(str[i]!='\01&&str[i]v'z'IIstr[i]>='A'&&str[i]<,Z,)str[i]+=l;elseif(str[i]=='z'IIstr[i]=='Z,)str[i]-=25;#endifprintf("輸出電碼為:\n%s",str);)第十章指針10.1main(){intnl,n2,n3;int*pl,*p2,*p3;scanf(H%d,%d,%d';&nI,&n2,&n3);pl=&nl;p2=&n2;p3=&n3;if(nl>n2)swap(p1,p2);if(n1>n3)swap(pl,p3);if(n2>n3)swap(p2,p3);printf("%d,%d,%d\n”,nI,n2,n3);)swap(pl,p2)int*pl,*p2;{intp;p=*pl;*pl=*p2;*p2=p;)10.2main(){char*str1[20],*str2[20],*str3[20];charswap();scanf("%s”,strl);scanf(n%sH,str2);scanf(n%sM,str3);if(strcmp(str1,str2)>0)swap(str1,str2);if(strcmp(str1,str3)>0)swap(str1,str3);if(strcmp(str2,str3)>0)swap(str2,str3);printf(H%s\n%s\n%s\n",strl,str2,str3);}charswap(pl,p2)char*pl,*p2;{char*p[20];strcpy(p,pl);strcpy(pl,p2);strcpy(p2,p);10.3main(){intnumber[10];input(number);max_min_&#l18alue(number);output(number);}input(number)intnumber[10];{inti;for(i=0;i<10;i++)scanned1',&number[i]);}max_min_&#l18alue(number)intnumber[10];{int*max,*min;int*p,*end;end=number+10;max=min=number;for(p=number+l;pif(*p>*max)max=p;elseif(*p<*min)min=p;*p=number[0];number[0]=*min;*min=*p;*p=number[9];number[9]=*max;*max=*p;return;}output(number)intnumber[10];{int*p;for(p=number;pprintf("%d,",*p);printf(M%d\nM,*p);)10.4main(){intnumber[20],n,m,i;scanf("%d”,&n);scanf(H%d",&m);for(i=0;iscanf(M%dM,&number[i]);move(number,n,m);for(i=0;iprintf(H%8dM,number[i]);)move(array,n,m)intarray[20],n,m;(int*p,end;end=*(array+n-l);for(p=aiTay+n-l;p>array;p-)*array=end;m-;if(m>0)move(array,n,m);)10.5#defmenmax50main(){inii,k,m,n,num[nmax],*p;scanf("%d,&n);p=num;for(i=0;i*(p+i)=i+1;i=k=m=0;while(m{if(*(p+i)!=0)k++;if(k==3){*(p+i)=O;k=0;m++;)i++;if(i==n)i=0;)while(*p=0)p++;printf("%d”/p);)10.6main(){intlen;char*str[20];scanf("%s”,str);len=length(str);printf(',\nlen=%d\n°Jen);)length(p)char*p;{intn=0;while(*p!=\O,){n++;p++;}return(n);)10.7main(){intm;char*strl[20],*str2[20];scanf(n%s'\strl);scanf("%d”,&m);if(strlen(strl)printf(HeirorM);else{copystr(str1,str2,m);printf("%s”,str2);)}copystr(pl,p2,m)char*pl,*p2;intm;{intn=0;while(n{n++;pl++;)while(*pl!=W){*p2=*pl;pl++;p2++;}*p2=A0,;}10.8#include"stdio.hnmain(){intcle=0,sle=0,di=0,wsp=0,ot=0,i;char*p,s[20];for(i=0;i<20;i++)s[i]=0;i=0;while((s[i]=getchar())!=*\n')i++;p=s;while(*p!='\n'){if(*p>=*a,&&*p<='z')++sle;elseif(*p>=,A,&&*p<='Z,)+4-cle;elseif(*p==*')++wsp;elseif(*p>='0'&&*p<=,9')++di;else++ot;P++;)printf(Msle=%d,cle=%d,wsp=%d,di=%d,ot=%d\nM,sle,cle,wsp,di,ot);)10.9main(){inta[3][3],*pj;for(i=0;i<3;i++)scanf(M%d,%d,%dM,a[i][0],a[i][l],a[i][2]);p=a;move(p);for(i=0;i<3;i++)printf(M%d%d%d\n'\a[i][0],a[i][1],a[i][2]);)move(pointer)int*pointer;{intij,t;for(i=0;i<2;i++)for(j=i+l;j<3;j++){t=*(pointer+3*i+j);*(pointer+3*i+j)=*(pointer+3*j+i);*(pointer+3*j+i)=t;10.10main(){inta[5][5],*p,i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(,'%d,,,&a[ij(j]);P=a;change(p);for(i=0;i<5;i++){printf(n\nn);for(j=0;j<5;j++)printf(M%8d\a[i][j]);change(p)int*p;{inti,j,change;int*pmax,*pmin;pmax=p;pmin=p;for(i=0;i<5;i++)for(j=0;j<5;j++){if(*pmax<*(p+5*i+j))pmax=p+5*i+j;if(*pmin>*(p+5*i4j))pmin=p+5*i+j;)change=*(p+12);*(p+12)=*pmax;*pmax=change;change=*p;*p=*pmin;*pmin=change;pmin=p+l;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i-fj)))pmin=p+5*i+j;change=*(p+4);*(p+4)=*pmin;*pmin=change;pmin=p+l;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;change=*(p+20);*(p+20)=*pmin;*pmin=change;pmin=p+l;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))&&(*pmin>*(p+5*i+j)))pmin=p4-5*i+j;change=*(p+24);*(p+24)=*pmin;*pmin=change;10.11main()(inti;char*p,str[10][10];for(i=0;i<10;i++)scanf(n%sn,str[i]);p=str;sort(p);f

溫馨提示

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

評論

0/150

提交評論