版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C程序設(shè)計(jì)第三版課后習(xí)題答案全解File->New->Project在打開的NewProject對(duì)話框中最左側(cè)ー欄中選擇VisualC++下面的CLR,之后在其右側(cè)的區(qū)域中選擇CLREmptyApplication并在下面的三個(gè)文本框中填入工程名稱(Name),工程位置(Location)以及解決方案名稱(SolutionName)之后單擊OK然后可以解決方案瀏覽器中看到剛オ新建的工程,右擊工程名,選擇Properties(屬性),在打開的對(duì)話框中選擇ConfigurationProperties(配置屬性)下面的General(一1般),然后將右邊對(duì)話框中的CommonLanguageRuntimeSupport(CLR支持)改為“NoCommonLanguageRuntimeSupport”,然后點(diǎn)擊確定退出接下來右擊工程中的SourceFiles,選擇Add->NewItem...,在打開的對(duì)話框中選擇"C++File(.cpp)",并在下方輸入ー個(gè)以.c結(jié)尾的文件名,之后點(diǎn)擊Add,之后就可以在這個(gè)文件中加入C語言代碼,按F5就可以調(diào)試運(yùn)行了。1.5請(qǐng)參照本章例題,編寫ー個(gè)C程序,輸出以下信息:kVeryGood!ry,解:main(){printf('‘**************************”アprintf(H\nH);printf(HVeryGood!\nH);printf(H\nH);?a\v*ittI***j?*j*?j?*j*?j?*j*?j?*j*?j?*j*?j?*j*?j?*j*?j??j?*j*1?1.6編寫一個(gè)程序,輸入a、b、c三個(gè)值,輸出其中最大值。解:main(){inta,b,c,max;printf(”請(qǐng)輸入三個(gè)數(shù)a,b,c:\nu);scanf(n%d,%d,%dn,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("最大數(shù)為:"%d",max);)第三章寫出以下程序運(yùn)行的結(jié)果。main(){charcl=,a\c2=,b;c3=,c,,c4=,\10r,c5='\116,;printf(**a%cb%c\tc%c\tabc\n**,cl,c2,c3);printf(**\t\b%c%c**,c4,c5);)解:aaubbuuuccuuuuuuabcAUN要將“China”譯成密碼,譯碼規(guī)律是:用原來字母后面的第4個(gè)字母代替原來的字母.例如,字母“A”后面第4個(gè)字母是”E”.”E”代替”A”。因此,"China”應(yīng)譯為”Ghnre”。請(qǐng)編ー程序,用賦初值的方法使cl、c2、c3、c4、c5五個(gè)變量的值分別為,C、h、T、‘n'、'a',經(jīng)過運(yùn)算,使cl、c2、c3、c4、c5分別變?yōu)檗y,、T、,m,、ア、9,并輸出。解:#include<stdio.h>main(){charcl=,C,,c2=,h,,c3=,i*,c4=,n,,c5=,a,;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(”密碼是%c%c%c%c%c\nu,cl,c2,c3,c4,c5);運(yùn)行結(jié)果:密碼是Glmre3.9求下面算術(shù)表達(dá)式的值。x+a%3*(int)(x+y)%2/4設(shè)x=2.5,a=7,y=4.7(float)(a+b)/2+(int)x%(int)y設(shè)a=2,b=3,x=3.5,y=3.10寫出程序運(yùn)行的結(jié)果。main(){intij,m,n;i=8;j=10;m=++i;n=j++;printfC,%d,%d,%d,%dH,M,m,n);解:9,11,9,103.12寫出下面表達(dá)式運(yùn)算后a的值,設(shè)原來a=12o設(shè)a和n都已定義為整型變量。(1)a+=a(2)a-=2 (3)a*=2+3 (4)a/=a+aa%=(n%=2),n的值等于5a+=a-=a*=a解:(1)24 (2)10 (3)60 (4)0 (5)0 (6)0第四章4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,cl='a',c2=,b,o想得到以下輸出格式和結(jié)果,請(qǐng)寫出程序(包括定義變量類型和設(shè)計(jì)輸出)。a=_3 b=_4 c=_5x=1.200000,y=2.400000,z=-3.600000x+y=_3.600 y+z=-1.20―z+x=-2.40cl='a'_or_97(ASCII)c2='b'_or_98(ASCII)main(){inta=3,b=4,c=5;longintu=51274,n=128765;floatx=1.2,y=2.4,z=3.6;charcl=,a,,c2=*b,;printf(ua=%2db=%2dc=%2d\nn,a,b,c);printf(Hx=%f,y=%f,z=%f\nn,x,y,z);printf(Hx+y=%5.2fy+z=%5.2fz+x=%5.2f\n**,x+y,y+z,z+x);printf(Hu=%61dn=%91d\nH,u,n);printf(H%s%s%d%s\nu,,'cl=,a,,,,,,oru,cl,,,(ASCII)K);printf(H%s%s%d%s\nu,,'c2=,a,,,,,,oru,c2,,,(ASCII)K);)4.7用scanf下面的函數(shù)輸入數(shù)據(jù),使a=3,b=7,x=8.5,y=71.82,cl='A',c2='a',問在鍵盤上如何輸入?main()(inta,b;floatx,y;charclc2;scanf("a=%d_b=%d",&a,&b);scanf(H_x=%f_y=%en,&x,&y);scanf(H_cl=%c_c2=%cM,&cl,&c2);)a=3_b=7_x=8.5_y=71.82_cl=A_c2=a4.8設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長(zhǎng)、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求文字說明,取小數(shù)點(diǎn)后兩位數(shù)字。請(qǐng)編程序。main(){floatr,h,Cl,Sa,Sb,Va,Vb;scanf(H%f,%fM,&r,&h);Cl=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf(HCl=%.2Anu,Cl);printf(nSa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\nn,Sa,Sb,Va,Vb);)4.9輸入一個(gè)華氏溫度,要求輸出攝氏溫度。公式為c=5(F-32)/9輸出要求有文字說明,取位2小數(shù)。main(){floatF,c;scanf(M%fn,&F);c=5*(F-32)/9;printf(,,c=%.2f,,,c);)4.10編程序,用getchar函數(shù)讀入兩個(gè)字符給cl、c2,然后分別用函數(shù)和函數(shù)輸出這兩個(gè)字符。并思考以下問題:(1)變量cl、c2應(yīng)定義為字符型或整形?抑二者皆可?(2)要求輸出cl和c2值的ASCI!碼,應(yīng)如何處理?用putchar函數(shù)還是printf函數(shù)?(3)整形變量與字符變量是否在任何情況下都可以互相代替?如:charcl,c2;與intcl,c2;是否無條件的等價(jià)?#include,*stdio.hKmain(){charcl,c2;cl=getchar();c2=getchar();putchar(cl);putchar('\n');putchar(c2);putchar('\n');)#includeHstdio.h"main(){charcl,c2;cl=getchar();c2=getchar();printf(**cl=%dc2=%d\n",cl,c2);printf(Hcl=%cc2=%c\nn,cl,c2);)第五章什么是算術(shù)運(yùn)算?什么是關(guān)系運(yùn)算?什么是邏輯運(yùn)算?解:略。C語言中如何表示”真”和“假"?系統(tǒng)如何判斷ー個(gè)量的”真”和”假”?解:設(shè)有一個(gè)邏輯表達(dá)式,若其結(jié)果為”真”,則以1表示;若其結(jié)果為”假”,則以〇表示。但是判斷ー個(gè)邏輯量的值時(shí),以〇代表”真”,以非。代表”假”。例如3&&5的值為”真”,系統(tǒng)給出3&&5的值為1。寫出下面各邏輯表達(dá)式的值。設(shè)a=3,b=4,c=5oa+b>c&&b==callb+c&&b-c!(a>b)&&!clll!(x=a)&&(y=b)&&0!(a+b)+c-l&&b+c/2解:o1101有3個(gè)整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù)。解:方法一#include<stdio.h>main(){inta,b,c;printf(”請(qǐng)輸入3個(gè)整數(shù):");scanf(M%d,%d,%dn,&a,&b,&c);if(a<b)if(b<c)printf(*,max=%d\n,,,c);elseprintf(nmax=%d\nn,b);elseif(a<c)printf(nmax=%d\nn,c);elseprintf(*,max=%d\n",a);)方法二:使用條件表達(dá)式,可以使程序更加簡(jiǎn)明、清晰。程序如下:#include<stdio.h>main(){inta,b,c,temp,max;printf(”請(qǐng)輸入3個(gè)整數(shù):つ;scanf("%d,%d,%d”,&a,&b,&c);temp=(a>b)?a:b; /?將a和b中的大者存人temp中?/max=(temp>c)?temp:c;/?將a和b中的大者與c比較,取最大者?/printf(M3個(gè)整數(shù)的最大數(shù)是%d\n”,max);)有一函數(shù):寫ー程序,輸入x值,輸岀y值。解:#include<stdio.h>main(){intx,y;printf("輸入x:H);scanグ%d”,&x);if(x<l) /*x<l*/{y=x;printf(Hx=%3d,y=x=%d\nn,x,y);
/*IWx-lO*/)elseif(x<10){y=2*x-l;/*IWx-lO*/printf(Hx=%3d,y=2*x-l=%d\nn,x,y);)else /*x21〇?/{y=3*x-ll;printf(Hx=%3d,y=3*x-ll=%d\n",x,y);))給ー個(gè)百分制成績(jī),要求輸出等級(jí)厶,、,B,、,C、,け、,E,。90分以上為,A,,80~90分為,B,,70~79分為,C,,60分以下為,D,。解:程序如下:#include<stdio.h>main(){floatscore;chargrade;printf(,,請(qǐng)輸入學(xué)生成績(jī):,り;scanf(H%fn,&score);while(score>100ll(score<0){printf(n\n輸入有誤,請(qǐng)重新輸入:");scanf(H%fn,&score);)switch((int)(score/10)){case10:case9:grade=*A*;break;case8:grade=*B*;break;case7:grade=*C*;break;case6:grade=*D*;break;case5:case4:case3:case2:case1:case0:grade二'E';)卩!4出K”成績(jī)是%5.13相應(yīng)的等級(jí)是%c。\n",score,grade);)說明:對(duì)輸入的數(shù)據(jù)進(jìn)行檢查,如小于〇或大于100,要求重新輸入。(int)(score/10)的作用是將(score/10)的值進(jìn)行強(qiáng)制類型轉(zhuǎn)換,得到ー個(gè)整型值。5.?給定一個(gè)不多于5位的正整數(shù),要求:①求它是幾位數(shù);②分別打印出每一位數(shù)字;③按逆序打印出各位數(shù)字。例如原數(shù)為321,應(yīng)輸出123。解?jVrv?#include<stdio.h>main(){longintnum;intindiv,ten,hundred,thousand,ten_thousand,place;/?分口?別Ae代iP表、”個(gè)?位?、花十0?位?、話百了“位?、と千n位?、沱萬???。位?和"-位?數(shù)。y*/printf("請(qǐng)?輸。?入”?ー。?個(gè)?整?數(shù)。y(6;§0-99999)e?:eo");scanf("%ld",&num);while(num>99999llnum<0){prinlf("\n輸。?入”?有?D誤“?,請(qǐng)?重?新?輸。?入“?:eo");scanf("%ldM,&num);)if(num>9999)place=5;elseif(num>999)place=4;elseif(num>99)place=3;elseif(num>9)place=2;elseplace=1;printf("place=%d\n",place);ten_thousand=num/10000;thousand=num/l000%10;hundred=num/100%10;ten=num%100/10;indiv=num%10;switch(place){case5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);printf("\n反彈序”。數(shù)0y字A?為a;e?");printf(,'%d%d%d%d%d\nM,indiv,ten,hundred,thousand,ten_thousand);break;case4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);printf("\n反口は序"。數(shù)。y字A?為a:eoM);printf("%d%d%d%d\n,\indiv,ten,hundred,thousand);break;case3:printf(,,%d,%d,%d",hundred,ten,indiv);printf("\n反口港序”。數(shù)°y字A?為a:eoM);printf("%d%d%d\n",indiv,ten,hundred);break;case2:printf("%d,%d'\ten,indiv);printf("\n反スii序"。數(shù)。y字A?為a:eoK);printf(,'%d%d\nM,indiv,ten);break;case1:printf(M%d,',indiv);printf("\n反對(duì)ii序"。數(shù)。y字A?為a:eo");printf(M%d\n",indiv);break;)scanf(H%ld",&num);5.8企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)I低于或等于10萬元時(shí),獎(jiǎng)金可提成10%:利潤(rùn)高于10萬元,低于20萬元(100000VIく20000〇)時(shí),其中10萬元按10%提成,高于10萬元的部分,可提成7.5%;200000vlく400000時(shí),其中20萬元仍按上述辦法提成(下同),高于20萬元的部分按5%提成;400000vlく600000時(shí),高于40萬元的部分按3%提成;600000〈IW1000000時(shí),高于60萬的部分按1.5%提成;1>1000000時(shí),超過100萬元的部分按1%提成。從鍵盤輸
入當(dāng)月利潤(rùn)L求應(yīng)發(fā)放獎(jiǎng)金總數(shù)。要求:(1)用if語句編程序;(2)用switch語句編程序。解:計(jì)算利潤(rùn)時(shí),要特別注意不同利潤(rùn)的不同提成比例。例如,利潤(rùn)為15萬元,其中有10萬元按10%的比例提成,另外5萬元?jiǎng)t按7.5%提成。(1)用if語句編程序。#include<stdio.h>main(){longi;floatbonus,bonl,bon2,bon4,bon6,bonl0;bonl=100000*0.1;金?bonl=100000*0.1;金?/bon2=bonl+100000*0.075;獎(jiǎng)金?/bon4=bon2+200000*0.05;獎(jiǎng)金?/bon6=bon4+200000*0.03;獎(jiǎng)金?/bonl0=bon6+400000*0.015;獎(jiǎng)金?//?利潤(rùn)為10萬元時(shí)的獎(jiǎng)/?利潤(rùn)為20萬元時(shí)的/?利潤(rùn)為40萬元時(shí)的/?利潤(rùn)為60萬元時(shí)的/?利潤(rùn)為!00萬元時(shí)的printf("請(qǐng)輸入利潤(rùn)i:”);scanf(n%ldn,&i);if(i<=100000)bonus=i*0.1;0.1提成獎(jiǎng)金?/elseif(i<=200000)bonus=boiil+(i-100000)*0.075;時(shí)的獎(jiǎng)金?/elseif(i<=400000)bonus=bon2+(i-200000)*0.05;時(shí)的獎(jiǎng)金?/elseif(i<=600000)bonus=bon4+(i-400000)*0.03;時(shí)的獎(jiǎng)金?/elseif(i<=1000000)bonus=bon6+(i-600000)*0.015;元時(shí)的獎(jiǎng)金?/elsebonus=bonl0+(i-1000000)*0.01;的獎(jiǎng)金?/printf("獎(jiǎng)金是%10,2f\n",bonus);/?利潤(rùn)在10萬元以內(nèi)按/?/?利潤(rùn)在10萬元以內(nèi)按/?利潤(rùn)在!0萬至20萬元/?利潤(rùn)在20萬至40萬元/?利潤(rùn)在40萬至60萬元/?利潤(rùn)在60萬至100萬/?利潤(rùn)在100萬元以上時(shí)此題的關(guān)鍵在于正確寫出每一區(qū)間的獎(jiǎng)金計(jì)算公式。例如利潤(rùn)在10萬元至20萬時(shí),獎(jiǎng)金應(yīng)由兩部分組成:①利潤(rùn)為10萬元時(shí)應(yīng)得的獎(jiǎng)金。即100000xO.l;②10萬元以上部分應(yīng)得的獎(jiǎng)金。即(mim.100000)x0.075〇同理,20萬?40萬這個(gè)區(qū)間的獎(jiǎng)金也應(yīng)由兩部分組成:①利潤(rùn)為20萬元時(shí)應(yīng)得的獎(jiǎng)金,即100000x0.1x10萬xO.075;②20萬元以上部分應(yīng)得的獎(jiǎng)金,即(num.20000〇)x0.05〇程序中先把10萬ヽ20萬、40萬、60萬、100萬各關(guān)鍵點(diǎn)的獎(jiǎng)金計(jì)算出來,即bonl>bon2>bon4>bon6、honlO;然后再加上各區(qū)間附加部分的獎(jiǎng)金。⑵用switch語句編程序。輸入利潤(rùn)i,確定相應(yīng)的提成等級(jí)branch根據(jù)branch確定獎(jiǎng)金值0獎(jiǎng)金=i*0.1! 獎(jiǎng)金=bonl+(i-105)*0.0752 獎(jiǎng)金=bon2+(i-2*105)*0.0534 獎(jiǎng)金;bon4+(i-4*l05)*0.0356 獎(jiǎng)金;bon6+(i-6*105)*0.01578910獎(jiǎng)金=bonl0+(i-106)*0.01輸出獎(jiǎng)金#include<stdio.h>main()(longi;floatbonus,bonl,bon2,bon4,bon6,bonlO;intc;bonl=100000*0.1;bon2=bonl+100000*0.075;bon4二bon2+200000*0.05;bon6=bon4+200000*0.03;bonl0=bon6+400000*0.015;printf("請(qǐng)輸入利潤(rùn)i:n);scanf(H%ldn,&i);c=i/100000;if(c>10)c=10;switch(c){case0:bonus=l*0.1;break;bonus=bonl+(i-100000)*0.075;break;:bonus=bon2+(i-200000)*0.05;break;bonus=bon4+(i-400000)*0.03;break;bonus=bon6+(i-600000)*0.015;break;bonus=bonl0+(i-1000000)*0.01;)printf("獎(jiǎng)金是%10.2f”,bomis);)輸入4個(gè)整數(shù),要求按由大到小的順序輸出。解:此題采用依次比較的方法排出其大小順序。在學(xué)習(xí)了循環(huán)和數(shù)組以后,可以有更多的排序方法。#include<stdio.h>main(){intt,a,b,c,d;printf(”請(qǐng)輸入4個(gè)整數(shù):");scanf("%d,%d,%d,%d",&a,&b,&c,&d);printf(**\na=%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=a;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("排序結(jié)果如下:'n");printf(M%d,%d,%d,%d\n",a,b,c,d);)有4個(gè)圓塔,圓心分別為(2,2)、(-2,2)、(2,-2)>(-2,-2),圓半徑為1。這4個(gè)塔的高度分別為10m。塔以外無建筑物。今輸入任一點(diǎn)的坐標(biāo),求該點(diǎn)的建筑高度(塔外的高度為零)。程序如下:#include<stdio.h>main(){inth=10;floatxl=2,yl=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,dl,d2,d3,d4;printf("請(qǐng)輸入ー個(gè)點(diǎn)(x,y):");scanf(H%f,%fn,&x,&y);dl=(x-xl)*(x-xl)+(y-yl)*(y-yl); /?求該點(diǎn)到各中心點(diǎn)的距離?/d2=(x-x2)*(x-x2)+(y+y2)*(y+y2);d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);if(dl>l&&d2>l&&d3>l&&d4>l)h=0; /?判斷該點(diǎn)是否在塔外?/printf("該點(diǎn)高度為%d\n”,h);)第六章第六章循環(huán)控制輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。main(){longm,n,i=lj,s;scanf(H%ld,%ldn,&m,&n);for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)s=i;}if(m>=n)j=m;elsej=n;for(;!(j%m==O&&j%n==O);j++);printf(,,s=%ldj=%ld\n*,,sj);)輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。#include"stdio.h"main(){charc;inti=Oj=O,k=O,l=O;while((c=getchar())!=,\n,){if(c>=65&&c<=90llc>=97&&c<=122)i++;elseif(c>=48&&c<=57)j++;elseif(c==32)k++;else1++;}printf(,,i=%dJ=%d,k=%d,l=%d\n,,4J,k,l);)求Sn=a+aa+aaa+…+aa…aaa(有n個(gè)a)之值,其中a是一個(gè)數(shù)字。例如:2+22+222+2222+22222(n=5),n由鍵盤輸入。#includenmath.hnmain(){intn,sum=O,i=1,s=2;scanf(M%dM,&n);while(i<=n){sum=sum+s;s=s+2*pow(10,i);i++;}printf(**sum=%d\n",sum);)求,(即求l!+2!+3!+4!+5!+…+20!)main(){intn,i=l;longsum=0,s=l;scanf(M%dH,&n);while(i<=n){s=s*i;sum=sum+s;i+4-;}printf(**sum=%ld\n,,,sum);)求main(){doublei=1J=1,k=1,sl=0,s2=0,s3=0,sum;for(;i<=100;i++)sl=sl+i;for(;j<=50;j++)s2=s2+j*j;for(;k<=10;k++)s3=s3+l/k;sum=sl+s2+s3;printf(Msum=%f\nn,sum);)打印出所有“水仙花數(shù)”,所謂”水仙花數(shù)”是指ー個(gè)三位數(shù),其各位數(shù)字立方和等于該本身。例如:153是ー個(gè)水仙花數(shù),因?yàn)?53=lA3+5A3+3A3o#include"math.h''main(){intx=100,a,b,c;while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf(”%5d”,x);x++;})ー個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為”完數(shù)”。例如,6的因子為1、2、3,而6=1+2+3,因此6是”完數(shù)”。編程序找出1000之內(nèi)的所有完數(shù),并按下面格式輸出其因子:6itsfactorsare1、2、3main(){intm,ij,s;for(m=6;m<10000;m++){s=l;for(i=2;i<m;i++)if(m%i==O)s=s+i;if(m-s==O){printf(H%5ditsfastorsare1H,m);for(i=2;j<m;j++)if(m%j==0)printf(M%d"j);printf("\n");}))或main(){intm,ij,s;for(m=6;m<1000;m++){s=m-l;for(i=2;i<m;i++)if(m%i==0)s=s-i;if(s==0){printf(H%5ditsfastorsare1H,m);for(i=2;j<m;j++)if(m%j==0)printf(M%d"j);printf("\n");})有一分?jǐn)?shù)序列:求出這個(gè)數(shù)列的前20項(xiàng)之和。main()(inti=l,n;doublet,x=hy=2,s,sum=0;scanf("%ld",&n);while(i<=n)(s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;)printf(H%f\n",sum);scanf("%Id'\&n);)一球從100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地時(shí)共經(jīng)過多少米?第10次反彈多高?main(){inti,n;doubleh=100,s=100;scanf(M%dH,&n);for(i=l;i<=n;i++){h*=0.5;if(i==l)continue;s=2*h+s;}printf(Mh=%f,s=%f\nn,h,s);)猴子吃桃問題。猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個(gè)。第二天早上又將剩下的桃子吃掉一半,又多吃ー個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上想再吃時(shí),見只剩下ー個(gè)桃子了。求第一天共摘多少桃子。main(){inti=l,sum=0;for(;i<=10;sum=2*sum+l,i++);printf(**sum=%d\n",sum);)用迭代法求。求平方根的迭代公式為:要求前后兩次求出的得差的絕對(duì)值少于0.00001。#include"math.h''main(){floatx0,xl,a;scanf(M%fu,&a);xl=a/2;do{xO=xl;xl=(x0+a/x0)/2;}while(fabs(x0-xl)>=0.00001);printf(M%.3f\n",xl);)用牛頓迭代法求方程在1.5附近的根。main(){doublex,y;x=1.5;do{y=2*x*x*x-4*x*x+3*x-6;x=x-y/(6*x*x-8*x+3);}while(y!=0);printf(Hx=%.3f\nn,x);)用二分法求方程在(?10,10)之間的根main(){doublexl,x2,yl,y2;xl=-10;x2=10;do{yl=2*xl*xl*xl-4*xl*xl+3*xl-6;xl=xl-yl/(6*xl*xl-8*xl+3);}while(yl!=O);do{y2=2*x2*x2*x2-4*x2*x2+3*x2-6;x2=x2-y2/(6*x2*x2-8*x2+3);}while(y2!=0);printf(Hxl=%.3f,x2=%.3f\n,,,xl,x2);)打印以下圖案#include"math.h''main(){intij,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(M**);for(k=0;k<=2*i;k++)printf(*'***);printf(n\nn);)for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(n");for(k=0;k<=4-2*i;k++)printfC***");printf(H\nn);)第七章數(shù)組用篩法求之內(nèi)的素?cái)?shù)。main(){intiJ,a[100];for(i=2;i<100;i++){a[i]=i;for(j=2;j<=i;j++)if(a[i]%j==O)break;if(a[i]-j==O)printf(H%5dn,a[i]);))printf(H\nH);)或#include"math.h''main(){staticintij,k,a[98];for(i=2;i<100;i++){a[i]=i;k=sqrt(i);for(j=2;j<=a[i];j++)if(j<k)if(a[i]%j==O)break;ifgk+1)printf(M%5du,a[i]);)printf(M\nH);)用選擇法對(duì)10個(gè)整數(shù)從小到大排序。main(){intiJ,a[10],t;for(i=0;i<10;i++)scanf(H%dH,&a[i]);for(j=l;j<10;j++)for(i=0;i<=9-j;i++)if(a[i]>a[i+l]){t=a[i+l];a[i+l]=a[i];a[i]=t;}for(i=0;i<10;i++)printf(H%5dn,a[i]);)或main(){staticinta[10],ij,k,t;for(i=l;i<ll;i++)scanf(M%dM,&a[i]);for(j=l;j<10;j++)for(i=l;i<=10-j;j++)if(a[i]>a[i+l]){t=a[i+l];a[i+l]=a[i];a[i]=t;}for(i=l;i<ll;i++)printf(M%d",a[i]);printf(H\nH);)求一個(gè)3X3矩陣對(duì)角線元素之和。main(){inti=0J=0,a[3][3],sl,s2;for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(H%dH,&a[i][j]);sl=a[0][0]+a[l][l]+a[2][2];s2=a[0][2]+a[l][l]+a[2][0];printf(,,sl=%d,s2=%d\n',,sl,s2);)或main(){staticintij,sl,s2,a[3][3];for(i=l;i<=3;i++)for(j=l;j<=3;j++)scanf(H%dH,&a[i][j]);sl=a[l][l]+a[2][2]+a[3][3];s2=a[l][3]+a[2][2]+a[3][l];printf(M%d,%d\n",sl,s2);)已有一個(gè)已排好的數(shù)組今輸入一個(gè)數(shù)要求按原來排序的規(guī)律將它插入數(shù)組中。main(){staticinta[10]={l,7,8,17,23,24,59,62,101};intij,t;scanf(n%dH,&a[9]);for(i=9;i>0;i-)if(a[i]<a[i-l]){t=a[i-l];a[i-l]=a[i];a[i]=t;}for(i=0;i<10;i++)printf("%5d”,a[i]);printf(”\n");)或main()(staticinta[5]={l,4,5,6,7};inti,t,b;scanグ%d”,&b);for(i=0;i<5;i++){if(b<=a[i]){t=a[i];a[i]=b;b=t;}printf(M%du,a[i]);}printf(H%dn,b);)將一個(gè)數(shù)組的值按逆序重新存放,例如,原來順序?yàn)?8,6,5,4,!〇要求改為:1,4,5,6,8〇main(){inti,b[10];for(i=0;i<10;i++)scanグ%d”,&b[i]);for(i=9;i>-l;i-)printf(M%5dn,b[i]);printf(M\nH);}打印出以下楊輝三角形(要求打印出10行)。1TOC\o"1-5"\h\z1 113 11 4 6 4 11 5 10 10 5 1main(){staticintm,n,k,b[15][15];b[0][l]=l;for(m=l;m<15;m++){for(n=l;n<=m;n++){b[m][n]=b[m-l][n-l]+b[m-l][n];printf(,,%-5d',,b[m][n]);}printf(,'\n,*);)))或main(){intiJ,n,k,a[10][10];static3[][1]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}};a[l][l]=l;for(k=2,k<ll;k++)for(i=2;i<=k;i++)for(j=2;j<=i;j++)a[i][j]=a[i-l][j-l]+a[i-l][j];for(k=l;k<ll;k++)for(i=l;i<=k;i++)for(j=l;j<=i;j++)printグ%d”,a[i][j]);)7.7打印“魔方陣”,所謂魔方陣是指這樣的方陣,它的每行、每一列和對(duì)角線之和均相等。例如,三階魔方陣為TOC\o"1-5"\h\z8 1 63 5 74 9 2要求打印出由1?n2的自然數(shù)構(gòu)成的魔方陣。解:#include<stdio.h>main(){inta[16][16J,i,i,k,p,m,n;P=l;while(p==l)為1?15的商數(shù)?/{printf("Entern(n=l~15):");scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0))p=0;/*初始化/*初始化?/for(j=l;j<=n;j++)a[i][j]=O;j=n/2+l;陣*/a[l]U]=l;for(k=2;k<=n*n;k++){i=M;j=j+l;if((i<l)&&a>n)){i=i+2;else{i=n;j=l;)if(a[i][j]==O)a[i][j]=k;else{i=i+2;a[i][j]=k;))for(i=l;i<=n;i++) /?輸出魔方陣*/{for(j=l;j<=n;j++)printf(,,%4d,',a[i][j]);printf(n\nn);))找出ー個(gè)二位數(shù)組中的鞍點(diǎn),即該位置上的元素在該行上最大,在該列上最小,也可能沒有鞍點(diǎn)。main(){inta[5][5],b[5],c[5],d[5][5],k=0,l=0;intij;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(M%dM,&d[i][j]);for(i=0;i<5;i++)fora=0;j<5;j++,a[i][j]=d[i][j]);for(i=0,k=0;i<5;i++,k+4-)for(j=0;j<4;j++){if(a[i]U]>=a[i][j+l])b[k]=a[i][j+l]=a[i][j];elseb[k]=a[i][j+l];)for(j=0,l=0;j<5;j++,l++)for(i=0;i<4;i++){if(a[i][j]<=a[i+l][j])c[l]=a[i+l][j]=a[i]U];elsec[l]=a[i+l][j];)for(i=0,k=0;i<5;i+4-,k++)for(j=0,l=0;j<5;j++,l++)if(d[i]U]-b[k]==o){if(d[i][j]-c[l]==o)printf("d[%d][%d]=%d\nn,ij,d[i][j]);elseprintf("d[%d][%d]=%disnotandi\nu,ij,d[i][j]);))有個(gè)15數(shù)按由小到大順序存放在ー個(gè)數(shù)組中,輸入一個(gè)數(shù),要求用折半查找法找出該數(shù)組中第幾個(gè)元素的值。如果該數(shù)不在數(shù)組中,則打印出“無此數(shù)”#include"math.h''main(){static intiJ,m,a[15]={l,4,9,13,21,34,55,89,144,233,377,570,671,703,812);scanf("%d”,&m);for(j=0;j<15;j++)printf(”%4d”,a[j]);printf(H\nH);i=7;while(fabs(i-7)<8){if(m<a[7]){if(a[i]-m==O){printf("itisat(%d)\n",i+l);break;}i—;}elseif(m>a[7]){if(a[i]-m==O){printf(**itisat(%d)\n,,,i+l);break;}i++;Jelseprintf(n8\nH);)if(fabs(i-7)-8==0)printf(nThereisnot\nu);)有一篇文章,共有3行文字,每行有個(gè)80字符。要求分別統(tǒng)計(jì)出其中英文大寫字母、小寫字母、空格以及其它字符的個(gè)數(shù)。main(){int iJ=0,k=0,l=0,m=0,n=0;charstr0[301],strl[100],str2[100],str3[100];gets(strl);gets(str2);gets(str3);strcat(str0,strl);strcat(str0,str2);strcat(str0,str3);for(i=0;str0[i]!=,\0,;i++){if(str0[i]>=65&&str0[i]<=90)j++;elseif(str0[i]>=97&&str0[i]<=122)k++;elseif(str0[i]>=48&&str0[i]<=57)1++;elseif(str0[i]==32)m++;elsen++;}printf(HDaxieXiaoxieShuziKonggeQita\nn);printf("%5d%7d%5d%6d%4d\n'';)打印以下圖案**************** *火火?*****main(){intij,k;chara[5][5];for(i=0;i<5;i++){for(j=0;j<5;j++){a[i]U]='*';printfC*%cn,a[i]U]);}printf(H\nH);for(k=l;k<=i+l;k++)printf(n\40M);}printf(M\nH);)有一行電文譯文下面規(guī)律譯成密碼:A->Za->zB->Yb->yC->Xc->x???即第一個(gè)字母變成第26個(gè)字母,第i個(gè)字母變成第(26-i+l)個(gè)字母。非字母字符不變,要求編程序?qū)⒚艽a回原文,并打印出密碼和原文。main(){inti;charstr1[100],str2[l00];gets(strl);for(i=0;strl[i]!=,\0,;i++)if(str1[i]>=65&&str1[i]<=90)str2[i]=155-str1[i];elseif(strl[i]>=97&&strl[i]<=122)str2[i]=219-strl[i];elsestr2[i]=strl[i];printf("%s\n%s\n*,,strl,str2);)編ー程序,將兩個(gè)字符串連接起來,不要strcat函數(shù)。main(){intij;charstrl[100],str2[100],str3[201];gets(strl);gets(str2);for(i=0;strl[i]!=,\0,;i++)str3[i]=strl[i];ford=0;str2[j]!=*\0,;j++)str3[j+i]=str2[j];printf(M%s\n%s\n%s\n',,strI,str2,str3);)編ー個(gè)程序,將兩個(gè)字符串S!和S2比較,如果S1>S2,輸出ー個(gè)正數(shù);S1=S2,輸出0;S1<S2,輸出ー個(gè)負(fù)數(shù)。不要用strcpy函數(shù)。兩個(gè)字符串用gets函數(shù)讀入。輸出的正數(shù)或負(fù)數(shù)的絕對(duì)值應(yīng)是相比較的兩個(gè)字符串相對(duì)應(yīng)字符的ASCI!碼的差值。例如,'A,與,C相比,由于,Al,C,應(yīng)輸出負(fù)數(shù),由于,A,與,C,的碼差值為2,因此應(yīng)輸出"2"。同理:“And"和“Aid”比較,根據(jù)第2個(gè)字符比較結(jié)果,,if比宇大5,因此應(yīng)輸出”5”。#include<stdio.h>#include<string.h>main(){inti,resu;charsl[100],s2[100];printf(u\ninputstringl:”);gets(sl);printf(u\nInputstringl:”);gets(s2);i=0;while(sl[i]==s2[i]&&sl[i]!=,\0,)i++;if(sl[i]==,\0,&&s2[i]==,0,)resu=O;elseresu=sl[i]-s2[i];printf(”ヽnresult:%d\n”,resu);)編寫ー個(gè)程序,將字符數(shù)組s2中的全部字符拷貝到字符數(shù)組si中不用strcpy函數(shù)??截悤r(shí),へ(T也要拷貝過去,へ(T后面的字符不拷貝。解:#includenstdio.hnmain(){charsl[80],s2[80];inti;printf(nInputs2:H);scanf(*'%sH,s2);for(i=0;i<strlen(s2);i++)sl[i]=s2[i];printf("sl:%s\nH,sl);)第八章第八章函數(shù)1.1寫兩個(gè)函數(shù),分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函數(shù),并輸出結(jié)果兩個(gè)整數(shù)由鍵盤輸入。maxyueshu(m,n)intm,n;{inti=l,t;for(;i<=m&&i<=n;i++){if(m%i==O&&n%i==O)t=>;)return(t);)minbeishu(m,n)intm,n;{intj;if(m>=n)j=m;elsej=n;for(;!(j%m==O&&j%n==O);j++);returnj;)main(){inta,b,max,min;printf(**entertwonumberis:H);scanf(n%d,%dM,&a,&b);max=maxyueshu(a,b);min=minbeishu(a,b);printf(Mmax=%d,min=%d\nu,max,min);)8.2求方程的根,用三個(gè)函數(shù)分別求當(dāng)b2-4ac大于〇、等于0、和小于0時(shí)的根,并輸出結(jié)果。從主函數(shù)輸入a、b、c的值。#include"math.h''floatyishigen(m,n,k)floatm,n,k;{floatxl,x2;xl=(-n+sqrt(k))/(2*m);x2=(-n-sqrt(k))/(2*m);printf(utwoshigenisxl二%.3fandx2=%.3f\nn,xl,x2);)floatdenggen(m,n)floatm,n;{floatx;x=-n/(2*m);printf(Hdenggenisx=%.3f\nn,x);)floatxugen(m,n,k)floatm,n,k;{floatx,y;x=-n/(2*m);y=sqrt(-k)/(2*m);printf(ntwoxugenisxl=%.3f+%.3fiandx2=%.3f-%.3fi\n”,x,y,x,y);)main(){floata,b,c,q;printf(ninputabcisn);scanf(''%f,%f,%尸,&a,&b,&c);printf(^^\n^^);q=b*b-4*a*c;if(q>0)yishigen(a,b,q);elseif(q==0)denggen(a,b);elsexugen(a,b,q);)8.2寫ー個(gè)判斷素?cái)?shù)的函數(shù),在主函數(shù)輸入ー個(gè)整數(shù),輸出是否是素?cái)?shù)的消息。psushu(m)intm;{inti=2,t;for(;i<=m;i++)if(m%i==O&&i<m)break;if(m-i==O)t=l;elset=0;returnm;)main(){inta,s;printf(Mentersushuis\nn);scanf(M%dH,&a);s=psushu(a);if(s==l)printf("aissushu\nn);elseprintf(nsisnotsushu\nn);)寫ー個(gè)函數(shù),使給定的一個(gè)二維數(shù)組(3X3)轉(zhuǎn)置,即行列互換。intzhuangzhi(b)intb[3][3];{intij,t;for(i=0;i<3;i++)ford=0;j>=i&&j<3-i;j++){t=b[i][j];b[i]U]=b[j][i];b[j][i]=t;})main(){inta[3][3];intij;for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(M%dM,&a[i][j]);for(i=0;i<3;i++){for(j=0;j<3;j++)printグ%d",a[i][j]);printf(H\nH);}zhuangzhi(a);for(i=0;i<3;i++){for(j=0;j<3;j++)printグ%d",a[i][j]);printf(H\nH);})寫ー函數(shù),使輸入的ー個(gè)字符串按反序存放,在主函數(shù)中輸入輸出字符串。main(){charstr0[100];gets(strO);fanxu(strO);puts(strO);)fanxu(strl)charstrl[100];{inti,tj;charstr2[l00];strcpy(str2,strl);t=strlen(strl);for(i=OJ=t-l;j>-l;i++J-)strl[i]=str2[j];)寫ー函數(shù),將兩個(gè)字符串連接。lianjie(a,b)chara[100],b[100];{strcat(a,b);)main(){charstrl[100],str2[100];gets(strl);gets(str2);lianjie(strl,str2);puts(strl);)寫ー函數(shù),將兩個(gè)字符串中的元音字母復(fù)制到另ー個(gè)字符串,然后輸出。fuzhi(a,b)chara[100],b[100];{intiJ=O;for(i=0;a[i]!=,\0,;i++)if(a[i]==97lla[i]==101lla[i]==105lla[i]==llllla[i]==117lla[i]==6511a[i]==69lla[i]==73lla[i]==85){b[j]=a[i];j++;})main(){charstrl[100],str2[100];gets(strl);fuzhi(strl,str2);puts(str2);)寫ー函數(shù),輸入一個(gè)四位數(shù)字,要求輸出這四個(gè)數(shù)字字符,但每?jī)蓚€(gè)數(shù)字間空格。如輸入199〇,應(yīng)輸出"1_9_9_0”。charf(b)charb[4];{inti=0;for(;i<4;i++){printf(MM);printf(H%cH,b[i]);}printf(M\nH);)main(){inta,u,v,w,t;charc[4];scanグ%4d”,&a);u=a*0.001;v=0.01*(a-1000*u);w=(a-1000*u-100*v)*0.1;t=a-l000*u-100*v-10*w;c[0]=u+48;c[l]=v+48;c[2]=w+48;c[3]=t+48;f(c);)編寫ー函數(shù),由實(shí)參傳來ー個(gè)字符串,統(tǒng)計(jì)此字符串中字母、數(shù)字、空格和其它字符的個(gè)數(shù),在主函數(shù)中輸入字符串以及輸出上述結(jié)果。chartongji(strO,b)charstr0[100];intb[4];{inti;for(i=0;str0[i]!=,\0,;i++){if(strO[i]>=65&&strO[i]<=9OllstrO[i]>=97&&strO[i]<=122)b[0]++;elseif(str0[i]>=48&&str0[i]<=57)b[l]++;elseif(str0[i]==32)b[2]++;elseb[3]++;})main(){charstrl[100];staticinti,a[4];gets(strl);tongji(strl,a);printf(HzimuShuziKonggeQita\nn);for(i=0;i<4;i++)printf(M%-8d,',a[i]);printf(,,\n**);)寫ー函數(shù),輸入一行字符,將此字符串中最長(zhǎng)的單詞輸出。cechang(strl,wordO)charstrl[100],word0[15];{inti=OJ=O,t=O;staticcharwordl[15];for(;strl[i]!=,\0,;i++){if(!(strl[i]>=97&&strl[i]<=122llstrl[i]>=65&&strl[i]<=90)){t=j;j=0;continue;}wordl[j]=str1[i];j++;if(j>=t)strcpy(wordO,wordl);})main(){charstrO[100],longword[15];gets(strO);cechang(strO,longword);puts(longword);)寫ー函數(shù)用起泡法對(duì)輸入的個(gè)字符按由小到大的順序排列。intpaixu(x)intx[];{intij,t;for(j=l;j<10;j++)for(i=0;i<=9-j;i++)if(x[i]>x[i+l]){t=x[i+l];x[i+l]=x[i];x[i]=t;})main(){inty[10];inti;for(i=0;i<10;i++)scanf(H%dM,&y[i]);paixu(y);for(i=0;i<10;i++)printf(H%5dn,y[i]);printf(H\nH);)用牛頓迭代法求根。方程為:,系數(shù)a,b,c,d由主函數(shù)輸入。求X在1附近的ー個(gè)實(shí)根。求出后由主函數(shù)輸出。doubleqigen(s,t,u,v)ints,t,u,v;{doublex,y;x=l;do{y=s*x*x*x+t*x*x+u*x+v;x=x-y/(3*s*x*x+2*t*x+u);}while(y!=O);returnx;)main(){inta,b,c,d;doublex;scanf("%d,%d,%d,%d”,&a,&b,&c,&d);x=qigen(a,b,c,d);printf(Hx=%.3f\nn,x);)用遞歸方法求n階勒讓德多項(xiàng)式的值遞歸公式為floatp(xO,n)intn;floatxO;{floaty;if(n==0lln==l)if(n==l)y=xO;elsey=l;elsey=((2*n-l)*x0*p(x0,n-l)-(n-l)*p(x0,n-2))/n;return(y);)main(){floatx,yO;inta,i;scanf(H%f,%dn,&x,&a);yO=p(x,a);printf(**y0=%.3f\n,,,y0);)輸入10個(gè)學(xué)生5門課的成績(jī),分別用函數(shù)求:①每個(gè)學(xué)生平均分;②每門課的平均分;③找出最高分所對(duì)應(yīng)的學(xué)生和課程;④求平均分方差:5=[SXiA2]/n-(SXi/n)A2,為ー學(xué)生的平均分floatxl[10],x2[5];floatpp(),cc(),find(),xx();main(){char name[10][20],class[5][20];floatscore[10][5],o,k=0,max[5];inta[5],ij;for(i=0;i<10;i++)gets(name[i]);for(j=0;j<5;j++)gets(class[j]);for(i=0;i<10;i++)for(j=0;j<5;j++)scanf(M%fn,&score[i][j]);pp(score);cc(score);Hnd(score,max,a);o=xx(k);for(i=0;i<10;i++){puts(name[i]);printf(H%.3f\nn,xl[i]);}for(j=0;j<5;j++){puts(class[j]);printf(,'%.3f\n,,,x2[j]);}for(j=0;j<5;j++){printf(n%.3f\n",max卜]);puts(name[a[j]]);puts(class[j]);}printf(”〇二%.3f\n",〇);)floatpp(f)floatf[10][5];{floatsum=0;intij;for(i=0,sum=0;i<10;i++){for(j=0;j<5;j++)sum=sum+f[i][j];xl[i]=sum/5;}floatcc(y)floaty[10][5];{floatsum=0;intij;for(j=0;j<5;j++){for(i=0;i<10;i++)sum=sum+y[i][j];xl[j]=sum/10;})floatfind(z,s,t)floatz[10][5],s[5];intt[5];{intij;for(j=0,s[j]=z[0][j];j<5;j++)for(i=0;i<10;i++)if(s[j]<z[i][j]){s[j]=z[i][j];t[j]=i;})floatxx(q)floatq;{floatf=0,e=0;inti;for(i=0;i<10;i++){e=xl[i]*xl[i]+e;f=f+xl[i];}q=e/10-(f/10)*(f/10);return(q);)寫幾個(gè)函數(shù):①輸個(gè)職エ的姓名和職エ號(hào);②按職エ號(hào)由小到大順序排序,姓名順序也隨之調(diào)整;③要求輸入一個(gè)職エ號(hào),用折半法找出該職エ的姓名,從主函數(shù)輸入要查找的職エ號(hào),輸出該職エ姓名。#defineN10find(a,b)inta[],b[];{intiJ,s,t,c[N][2];for(i=0;i<N;i++){c[i][l]=a[i];c[i][l]=i;}for(i=0;i<N;i++)for(j=0;j<N-i-l;j++)if(c[i][0]>c[i+l][0]){t=c[i][0];c[i][0]=c[i+l][0];c[i+l][0]=t;s=c[i][l];c[i][l]=c[i+l][l];c[i+l][l]=s;}for(i=0;i<N;i++)b[i]=c[i][l];return;)lookfor(h,k)inth[],k;{intij;for(i=0;i<N;i++)if(h[i]-k==O)j=i;returnj;)main(){intnumber[N],x[N],iJ,u,p;charname[N][20];for(i=0;i<N;i++){gets(name[i]);scanf("%dH,&number[i]);}scanf(n%dn,&p);find(number,x);u=lookfor(number,p);for(i=0;i<N;i++){printf(n%dH,number[i]);puts(name[x[i]]);}puts(name[x[u]]);寫ー函數(shù),輸入ー個(gè)十六進(jìn)制數(shù),輸出相應(yīng)的十進(jìn)制數(shù)。#include"math.h''intx;ff(shu)charshu[];{inti=strlen(shu)-l,sum=O;for(;i>-l;i++){if{if(48<=shu[i]<=57)sum=sum+(shu[i]-48)*pow(16,(i-l));elseif(65<=shu[i]<=90)sum=sum+(shu[i]-55)*pow(16,(i-l));else if(97<=shu[i]<=102)sum=sum+(shu[i]-87)*pow(16,(i-l));x=l;}elsex=0;returnx;)main(){charshufu[100];ints;gets(shufu);s=ff(shufu);if(x)printf(Ms(D)=%d\n",s);elseprintf(nThenumberisnotox\nn);用遞歸法將一個(gè)整數(shù)n轉(zhuǎn)換成字符串。例如,輸入486,應(yīng)輸出字符串“486”。n的位數(shù)不確定,可以是任意位數(shù)的整數(shù)。#include"math.h''intx[10];pf(m,n)unsignedlongm;intn;{inty;if(n==0){y=(int)(m%10);x[0]=y;}else {y=(unsignedlong)((m-pf(m,n-l))/pow(10,n))%10;x[n]=y;}return(y);)main(){unsignedlonga,b;intij,k;charc[ll];scanグ%Id”,&a);for(j=0,b=a;b>0.1;j++,b/=10);pf(aj-l);for(i=0,k=j-l;i<j;i++,k-)c[i]=x[k]+48;c[10]=,\0,;puts(c);}或#include"math.h''charx[ll];pf(m,0)unsignedlongm;into;{intj,i;for(i=o-lj=0;i>-l;i-j++)x[i]=(int)((unsignedlong)(m/pow(10J))%10)+48;return;)main(){unsignedlonga,b;intj,i;scanグ%Id”,&a);for(j=0,b=a;b>0.1;j++,b/=10);pf(aj);puts(x);printf(H%d\nnJ);}或#include"math.h''intx[10];unsignedlongm;pf(n)intn;{inty;if(n==O){y=m%10;x[0]=y;}else{y=(unsignedlong)((m-pf(n-l))/pow(10,n))%10;x[n]=y;}return(y);)main(){unsignedlonga;intij,k;charc[ll];scanf("%ldn,&m);for(j=0,a=m;a>0.1;j++,a/=10);pfO-1);for(i=0,k=j-l;i<j;i++,k-)c[i]=x[k]+48;c[10]=,\0,;puts(c);}給出年、月、日,計(jì)算該日是該年的第幾天。intfind(x,y,z)intx,y,z;{inti,t,s,days=O;if(x%4==0)t=l;elset=0;for(i=l;i<y;i++){if(i==2)s=2-t;elses=0;days=days+30+i%2-s;)days=days+z;return(days);)main(){intyear,month,date,day;scanf(H%d%d%dn,&year,&month,&date);day=find(year,month,date);printf(HTHEDATEISTHE%dthDAYS\nn,day);)第九章第九章編譯預(yù)處理定義一個(gè)帶參的宏,使兩個(gè)參數(shù)的值互換,并寫出程序,輸入兩個(gè)數(shù)作為使用宏時(shí)的實(shí)參。輸出已交換后的兩個(gè)值。#defineCHANGE(a,b,t)t=a;a=b;b=amain(){intc,d,s;scanf(M%d,%dn,&c,&d);CHANGE(c,d,s);printf("c=%d,d=%d\ii*,,c,d);)輸入兩個(gè)整數(shù),求他們相除的余數(shù)。用帶參的宏來實(shí)現(xiàn),編程序。#defineQ(a,b)a%bmain(){intc,d,t;scanグ%d%d”,&c,&d);t=Q(c,d);printf(,,t=%d\n',,t);)三角形面積為:其中S=(a+b+c)/2,a、b、c為三角形的三邊。定義兩個(gè)帶參的宏S,一個(gè)用來求area,另一個(gè)宏用來求。寫程序,在程序中用帶實(shí)參的宏名來求面積area〇#include"math.h''#defineSSS(m,n,k)(m+n+k)/2#define AQRT(m,n,k)sqrt(SSS(m,n,k)*(SSS(m,n,k)-m)*(SSS(m,n,k)-n)*(SSS(m,n,k)-k))main(){floata,b,c,s,area;scanf(M%f%f%fn,&a,&b,&c);s=SSS(a,b,c);area=AQRT(a,b,c);printf("s=%.3farea=%.3f\n**,s,area);)或#include"math.h''#defineSSS(m,n,k)(m+n+k)*0.5#define AQRT(m,n,k)sqrt(((m+n+k)/2)*((m+n+k)/2-m)*((m+n4-k)/2-n)*((m+n+k)/2-k))main(){floata,b,c,t,area;scanf(M%f%f%f”,&a,&b,&c);t=SSS(a,b,c);area=AQRT(a,b,c);printf(Ht=%.3f;area=%.3f\nu,t,area);)或#include"math.h''#defineSSS(m,n,k)((m+n+k)/2)#defineAQRT(m,n,k,m,n,k,m,n,k,m,n,k,m,n,k,m,n,k,m,n,k,m,n,k,m,n,k)sqrt(SSS*(SSS-m)*(SSS-n)*(SSS-k))main(){floata,b,c,t,area;scanf(M%f%f%fn,&a,&b,&c);t=SSS(a,b,c);area=AQRT(a,b,c,a,b,c,a,b,c,a,b,c,a,b,c,a,b,c,a,b,c,a,b,c,a,b,c);printf(Ht=%.3f;area=%.3f\nu,t,area);)給年份year,定義ー個(gè)宏,以判別該年份是否閏年。提示:宏名可以定義為L(zhǎng)EAP_YEAR,形參為y,既定義宏的形式為#defineLEAP_YEAR(y)(讀者設(shè)計(jì)的字符串)在程序中用以下語句輸出結(jié)果:if(LEAP_YEAR(year))printf(H%disaleapyear”,year);elseprintf("%disnotaleapyear”,year);#defineLEAPYEAR(y)y%4main(){inty;scanf("%d",&y);if(LEAPYEAR(y))printf("%disanotleapyear\
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 業(yè)務(wù)員一周工作計(jì)劃范文(8篇)
- 教研2024年個(gè)人工作總結(jié)下載
- 2024年文化藝術(shù)創(chuàng)業(yè)項(xiàng)目共營合同
- 年度促銷活動(dòng)總結(jié)格式(4篇)
- DB4106T 30-2020 龍須菜生產(chǎn)技術(shù)規(guī)程
- 師德師風(fēng)宣傳活動(dòng)總結(jié)
- 報(bào)社轉(zhuǎn)正工作總結(jié)(3篇)
- 2024年新一代信息技術(shù)研發(fā)團(tuán)隊(duì)組建合同
- 2024年新型勞務(wù)派遣合作協(xié)議
- 2024年房地產(chǎn)項(xiàng)目轉(zhuǎn)讓協(xié)議
- 平陽港區(qū)西灣作業(yè)區(qū)防浪導(dǎo)流堤工程海域使用論證報(bào)告書
- 管道保溫計(jì)算公式
- 錄音行業(yè)的就業(yè)生涯發(fā)展報(bào)告
- 報(bào)廢汽車拆解工藝流程
- 生化報(bào)告解讀
- 胃癌科普講座課件
- 熔煉車間工安全培訓(xùn)
- 《多彩的職業(yè)》參考課件
- 醫(yī)用放射儀器的工作原理
- 抖音傳媒管理制度
- 家畜繁殖學(xué)課件
評(píng)論
0/150
提交評(píng)論