第一篇:C語(yǔ)言程序設(shè)計(jì)教程 第五章 課后習(xí)題參考答案
P124 2古典問(wèn)題:兔子總數(shù)(斐波那契數(shù)列)#include
f=f1+f2;
printf(“%dt”,f);
k++;
if(k%5==0)
printf(“n”);
f1=f2;
f2=f;} printf(“n”);return 0;}
P124 3統(tǒng)計(jì)一個(gè)整數(shù)的位數(shù) #include
n/=10;
k++;} printf(“%dn”,k);return 0;}
P124 4求逆序數(shù) #include
n=a%10;
printf(“%d”,n);
a=a/10;
} return 0;}
P124 5輸出回文數(shù) #include
m=0;
t=n;
while(t>0)
{
m=m*10+t%10;
t=t/10;
}
if(n==m)
{
printf(“%dt”,n);
k++;
if(k%9==0)
printf(“n”);
} } printf(“n”);return 0;}
判斷回文數(shù)
#include
} printf(“請(qǐng)輸入一個(gè)整數(shù):”);scanf(“%d”,&n);t=n;while(t>0){ m=m*10+t%10;t=t/10;} if(n==m)printf(“%d是回文數(shù)n”,n);else printf(“%d不是回文數(shù)n”,n);return 0;實(shí)驗(yàn)指導(dǎo)書(shū)
P33 1求奇偶數(shù)和 #include
printf(“請(qǐng)輸入第%d個(gè)整數(shù)x=”,i);scanf(“%d”,&x);if(x%2==0){
n=n+x;
i++;} else {
m=m+x;
i++;} } printf(“奇數(shù)之和m=%d,偶數(shù)之和n=%dn”,m,n);
m=0,n=0,i=1,x;do { printf(“請(qǐng)輸入第%d個(gè)整數(shù)x=”,i);scanf(“%d”,&x);if(x%2==0){
n=n+x;
i++;} else {
m=m+x;
i++;} }while(i<=10);printf(“奇數(shù)之和m=%d,偶數(shù)之和n=%dn”,m,n);
m=0,n=0,i,x;for(i=1;i<=10;i++){
printf(“請(qǐng)輸入第%d個(gè)整數(shù)x=”,i);
scanf(“%d”,&x);
if(x%2==0)
{
n=n+x;
}
else
{
m=m+x;
} } printf(“奇數(shù)之和m=%d,偶數(shù)之和n=%dn”,m,n);
return 0;}
P33 3求e值 #include
m=m*1/i;
e=e+m;} printf(“e=%lfn”,e);
m=1,e=1,i=1;while(fabs(1/m)>=1e-7){
m=m*i;
e=e+1/m;
i++;} printf(“e=%lfn”,e);
m=1,e=1,i=1;do {
m=m*i;
e=e+1/m;
i++;}while(fabs(1/m)>=1e-7);printf(“e=%lfn”,e);
return 0;
P33 5求最大公約數(shù)和最小公倍數(shù) #include
printf(“please input two numbers:”);scanf(“%d %d”,&x,&y);m=x*y;if(x t=x; x=y; y=t;} while((r=x%y)!=0){ x=y; y=r;} n=m/y;printf(“最大公約數(shù)%d:n”,y);printf(“最小公倍數(shù)%d:n”,n);return 0; P38 2求第一個(gè)能被9整除且個(gè)位數(shù)是5的數(shù) #include if(i%9==0&&i%10==5) break;} printf(“第一個(gè)能被9整除且個(gè)位數(shù)是5的數(shù)為:n%dn”,i);return 0;} P38 3百錢(qián)百雞問(wèn)題 #include { } for(y=1;y<=33;y++){ for(z=3;z<=99;z=z+3){ if((5*x+3*y+z/3==100)&&(x+y+z==100)) i++;} } printf(“共有%d種買(mǎi)法:n”,i); x,y,z,i=0; for(x=1;x<=20;x++){ for(y=1;y<=33;y++) { for(z=3;z<=99;z=z+3) { if((5*x+3*y+z/3==100)&&(x+y+z==100)) printf(“公雞只數(shù):%d,母雞只數(shù):%d,小雞只數(shù)%dn”,x,y,z); } } } return 0;} P38 4 #include i++; if(i*i>=15) { printf(“%dn”,2*i-1); break; } } } return 0; C語(yǔ)言程序設(shè)計(jì)教程課后習(xí)題答案 第一章 C語(yǔ)言程序設(shè)計(jì)概述 -習(xí)題答案 算法的描述有哪些基本方法? 答 1、自然語(yǔ)言 2、專(zhuān)用工具C語(yǔ)言程序的基本結(jié)構(gòu)是怎樣的?舉一個(gè)例子說(shuō)明。 答 1、C語(yǔ)言程序由函數(shù)構(gòu)成; 2、“/*”與“*/”之間的內(nèi)容構(gòu)成C語(yǔ)言程序的注釋部分; 3、用預(yù)處理命令#include、#define可以包含有關(guān)文件或預(yù)定義信息; 4、大小寫(xiě)字母在C語(yǔ)言中是有區(qū)別的; 5、除main()函數(shù)和標(biāo)準(zhǔn)庫(kù)函數(shù)外,用戶(hù)也可以自己編寫(xiě)函數(shù),應(yīng)用程序一般由多個(gè)函數(shù)組成,這些函數(shù)指定實(shí)際所需要做的工作。C語(yǔ)言有什么特點(diǎn)? 答 1、具有結(jié)構(gòu)語(yǔ)言的特點(diǎn),程序之間很容易實(shí)現(xiàn)段的共享; 2、主要結(jié)構(gòu)成分為函數(shù),函數(shù)可以在程序中被定義完成獨(dú)立的任務(wù),獨(dú)立地編譯代碼,以實(shí)現(xiàn)程序的模塊化; 3、運(yùn)算符豐富,包含的范圍很廣; 4、數(shù)據(jù)類(lèi)型豐富; 5、允許直接訪(fǎng)問(wèn)物理地址,即可直接對(duì)硬件進(jìn)行損傷,實(shí)現(xiàn)匯編語(yǔ)言的大部分功能; 6、限制不太嚴(yán)格,程序設(shè)計(jì)自由度大,這樣使C語(yǔ)言能夠減少對(duì)程序員的束縛; 7、生成的目標(biāo)代碼質(zhì)量,程序執(zhí)行效率高,同時(shí)C語(yǔ)言編寫(xiě)的程序的可移植性好。★指出合法與不合法的標(biāo)識(shí)符命名。 答 AB12--√ leed_3--a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--× XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×說(shuō)明下列Turbo C熱鍵的功能。 答 F2:源文件存盤(pán) F10:調(diào)用主菜單 F4:程序運(yùn)行到光標(biāo)所在行(用于調(diào)試程序)Ctrl+F9:編譯并鏈接成可執(zhí)行文件 Alt+F5:將窗口切換到 DOS 下,查看程序運(yùn)行結(jié)果。說(shuō)明下列Turbo C方式下輸入并運(yùn)行下列程序,記錄下運(yùn)行結(jié)果。 ①main() {printf(“********************n”);printf(“ welcome you n”);printf(“ very good n);printf(”********************n“);} ②main() { int a,b,c,t;printf(”please input three numbers;“);scanf(”%d,%d,%d“,&a,&b,&c);/*教材S是錯(cuò)誤的*/ t=max(max(a,b),c);printf(”max number is:%dn“,t);} int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);} 答 運(yùn)行結(jié)果: ******************** welcome you very good ******************** 運(yùn)行結(jié)果: please input three numbers;3,1,4 /*左側(cè)下劃線(xiàn)內(nèi)容為鍵盤(pán)輸入*/ max number is:4 7 一個(gè)C程序是由若干個(gè)函數(shù)構(gòu)成的,其中有且只能有一個(gè)___函數(shù)。 答 main()8 在Turbo C環(huán)境下進(jìn)行程序調(diào)試時(shí),可以使用Run下拉菜單的___命令或按___鍵轉(zhuǎn)到用戶(hù)屏幕查看程序運(yùn)行結(jié)果。 答 1、User screen 2、Alt+F5 9 ★C語(yǔ)言對(duì)標(biāo)識(shí)符與關(guān)鍵字有些什么規(guī)定? 答 1、標(biāo)識(shí)符用來(lái)表示函數(shù)、類(lèi)型及變量的名稱(chēng),它是由字母、下劃線(xiàn)和數(shù)字組成,但必須用字母或下劃線(xiàn)開(kāi)頭。 2、關(guān)鍵字是一種語(yǔ)言中規(guī)定具有特定含義的標(biāo)識(shí)符,其不能作為變量或函數(shù)名來(lái)使用,用戶(hù)只能根據(jù)系統(tǒng)的規(guī)定使用它們。C源程序輸入后是如何進(jìn)行保存的? 答 是以C為擴(kuò)展名保存的純文本文件。 第二章 C語(yǔ)言程序的基本數(shù)據(jù)類(lèi)型與表達(dá)式 -習(xí)題答案 ★指出下列常數(shù)中哪些是符合C語(yǔ)法規(guī)定的。 答 ''--× '101'--× ”“--× e3--× 019--√ 0x1e--√ ”abn“--√ 1.e5--×(2+3)e(4-2)--× 5.2e2.5--×請(qǐng)找出下列程序中的錯(cuò)誤,改正后寫(xiě)出程序運(yùn)行結(jié)果。 ①void main(){int x,y=z=5,aver;x=7 AVER=(x+y+z)/3 printf(”AVER=%dn“,aver);} ②void main() { char c1='a';c2='b';c3='c';int a=3.5,b='A' printf(”a=%db='“endn”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);} 答 main(){int x,y=5,z=5,aver;x=7;aver=(x+y+z)/3;printf(“AVER=%dn”,aver);} 運(yùn)行結(jié)果:AVER=5 ②main() { char c1='a', c2='b', c3='c';int a=3,b='A';printf(“a=%d,b='%c'”end“n”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);} 運(yùn)行結(jié)果:a=3,b='A'“end” aabcc abc 3 寫(xiě)出下列賦值的結(jié)果,表格中寫(xiě)了數(shù)值的是要將它賦給其他類(lèi)型的變量,將所有的空格填上賦值后的數(shù)據(jù)(實(shí)數(shù)保留到小數(shù)點(diǎn)后兩位)。int 99 -1 char 'h' unsigned int float 55.78 long int 答 int 99 104 66 55 68-1 char 'c' 'h' 'B' '7' 'D' unsigned int 99 104 66 55 68 65535 float 99.00 104.00 66.00 55.78 68.00-1.00 long int 99 104 66 55 68-1 ★寫(xiě)出程序運(yùn)行結(jié)果。 ①void main(){int i,j;i=8,j=10;printf(“%d,%d,%d,%dn”,i,j,++i,j++);} ②main() { int a=1,b=2,c=30;;printf(“%d,%d,%d,%dn”,a=b=c,a=b==c,a==(b=c),a==(b==c));} 注意:a=b=c,a=b==c之間應(yīng)為逗號(hào),教材有誤 答 運(yùn)行結(jié)果: 9,11,9,10 運(yùn)行結(jié)果: 30,1,0,0 ③void main() {int a=10,b=20,c=30,d;d=++a<=10||b-->=20||c++;printf(“%d,%d,%d,%dn”,a,b,c,d);} 答 運(yùn)行結(jié)果: 11,19,30,1 ★寫(xiě)出下面表達(dá)式的值(設(shè)a=10,b=4,c=5,d=1,x=2.5,y=3.5)。⑴a%=(b%=3) ⑵n++,a+=a-=a*=a ⑶(float)(a+c)/2+(int)x%(int)y ⑷a*=b+c ⑸++a-c+b++ ⑹++a-c+++b ⑺a ⑼a+b,18+(b=4)*3,(a/b,a%b) ⑽x+a%3*(int)(x+y)%2/4+sizeof(int)⑾a 答 ⑴0 ⑵0 ⑶9.500000 ⑷90 ⑸10 ⑹10 ⑺'A' ⑻2 ⑼4.5 ⑽1 ⑾0 ⑿20 ⒀0 下列每組表達(dá)式中,被執(zhí)行后結(jié)果完全等價(jià)的是哪些(設(shè)a、b、m是已被賦值的整型變量)? ①m=(a=4,4*5)與m=a=4,4*5 ②(float)(a/b)與(float)a/b ③(int)a+b與(int)(a+b)④m%=2+a*3與m=m%2+a*3 ⑤m=1+(a=2)+(b=3)與a=2,b=3,m=1+a+b 答 ①前面是賦值表達(dá)式,而后面的是一個(gè)逗號(hào)表達(dá)式,所以一定不同; ②前面的表達(dá)式中a/b結(jié)果為一整數(shù),結(jié)果已經(jīng)取整,精度可能受到影響,之后強(qiáng)制float后才為浮點(diǎn)型,后面的是先將a轉(zhuǎn)換為float后再與b相除,其值保證了精度,所以不同。 ③因?yàn)閍、b均為整數(shù),其前后兩個(gè)表達(dá)式的計(jì)算結(jié)果是一致的。 ④前一表達(dá)式是一算術(shù)表達(dá)式,而后者為一賦值表達(dá)式,此為一點(diǎn)不同;另外,前一表達(dá)式的m只被賦過(guò)一次值,后一表達(dá)式中的m曾兩次被賦值,第一次賦值時(shí)與第一表達(dá)式中的值一致,第二次賦值后即不再相同。⑤前后表達(dá)式的計(jì)算結(jié)果應(yīng)該是一致的:a=2, b=3, m=6 7 條件表達(dá)式x>0?x:-x的功能是什么? 答 如果x的值是一正數(shù),則表達(dá)式的值為x值;如果x的值是一非正數(shù),則表達(dá)式的值為-x。其實(shí)該表達(dá)式的值即為x的絕對(duì)值,C語(yǔ)言中提供了一個(gè)函數(shù)fabs(x)即可完成此功能,該函數(shù)包含在math.h頭文件中。用一個(gè)條件表達(dá)式描述從a、b、c中找出最大都賦給max.答 max=a>(b>c?b:c)?a:(b>c?b:c);9 ★若x為int型變量,則執(zhí)行以下語(yǔ)句后x的值為()。x=6;x+=x-=x*x;A.36 B.-60 C.60 D.-24 答 B.10 ★若有以下類(lèi)型說(shuō)明語(yǔ)句: char w;int x;float y;double z;則表達(dá)式w*x+z-y的結(jié)果為()類(lèi)型。A.float B.char C.int D.double 答 D.第三章 順序結(jié)構(gòu)程序設(shè)計(jì) -習(xí)題答案 變量k為float類(lèi)型,調(diào)用函數(shù)scanf(“%d”,&k),不能使變量k得到正確數(shù)值的原因是___。 答 格式修飾符與變量類(lèi)型不一致。因?yàn)?d輸入的數(shù)據(jù)類(lèi)型應(yīng)該為十進(jìn)制整數(shù),而&k為占用4個(gè)字節(jié)的float類(lèi)型變量的地址。★a=1234,b=12,c=34,則執(zhí)行“printf(“|%3d%3d%-3d|n”,a,b,c);”后的輸出是___。 答 |1234 1234 | 分析如下: ①%3d為右對(duì)齊輸出變量,且指定輸出變量的值寬度為3個(gè)字符位,如果變量實(shí)際位數(shù)小于3,則左端補(bǔ)空格,如果變量實(shí)際位數(shù)大于3,則按實(shí)際長(zhǎng)度輸出,不受限制。 ②%-3d為左對(duì)齊輸出變量,在輸出變量時(shí),如是變量實(shí)際位數(shù)小于3,則在右端補(bǔ)空格,否則按實(shí)際輸出。★設(shè)有“int a=255,b=8;”,則“printf(“%x,%on”,a,b);”輸出是___。答 ff,10 ①如果“printf(“%X,%on”,a,b);”則輸出為FF,10。說(shuō)明在輸出十六進(jìn)制字母時(shí),其大小寫(xiě)受格式修飾符的限制,如果是“%x”則輸出小寫(xiě),如果是“%X”則輸出大寫(xiě)。 ②如果希望在輸出十六進(jìn)制時(shí)輸出前導(dǎo)符0x或0X,則以上輸出語(yǔ)句應(yīng)改“printf(“%#x,%on”,a,b);”為或“printf(“%#X,%on”,a,b);”。本條解釋不必須掌握。★以下程序輸出的結(jié)果是___。main(){ int a1=1,a2=0,a3=2;printf(“%d,%d,%dn”,a1,a1+a2+a3,a3-a1);} 答 1,3,1 5 printf函數(shù)中用到格式符%5s,其中5表示輸出字符占用5列。如果字符串長(zhǎng)度大于5,則按___輸出;如果字符串長(zhǎng)度小于5,則按___輸出。 答 ①實(shí)際 ②左端補(bǔ)空格 6 ★已定義變量如下: int a1,a2;char c1,c2;若要求輸入a1、a2、c1和c2的值,正確的輸入函數(shù)調(diào)用語(yǔ)句是___。 答 scanf(“%d,%d,%c,%c”,&a1,&a2,&c1,&c2);7 輸入兩個(gè)整型變量a、b的值,輸出下列算式以及運(yùn)算結(jié)果___。a+b、a-b、a*b、a/b、(float)a/b、a%b 每個(gè)算式占一行。如a=10,b=5,a+b輸出為:10+5=15 答 設(shè)int a=10,b=5;以下為輸出語(yǔ)句及結(jié)果: ①printf(“%d+%d=%dn”,a,b,a+b);10+5=15 ②printf(“%d-%d=%dn”,a,b,a-b);10-5=5 ③printf(“%d*%d=%dn”,a,b,a*b);10*5=50 ④printf(“%d/%d=%dn”,a,b,a/b);10/5=2 ⑤printf(“%(float)d/%d=%fn”,a,b,(float)a/b);(float)10/5=2.000000 ⑥printf(“%d%%%d=%dn”,a,b,a%b);10%5=0 8 ★輸入一個(gè)非負(fù)數(shù),計(jì)算以這個(gè)數(shù)為半徑的圓周長(zhǎng)和面積。答 #define PI 3.1415926 main(){ float r,l,area;printf(“Input a positive:”);scanf(“%f”,&r);l=2*PI*r;area=PI*r*r;printf(“l(fā)=%ftarea=%fn”,l,area);} 9 輸入任意一個(gè)3位數(shù),將其各位數(shù)字反序輸出(例如輸入123,輸出321)。 答 main(){ int x,y;printf(“Input a number(100-999):”);scanf(“%d”,&x);y=100*(x%10)+10*(x/10%10)+x/100;/*注意分析此處算法*/ 《C語(yǔ)言程序設(shè)計(jì)教程》 課后習(xí)題參考答案 習(xí)題1 1.(1)編譯、鏈接 .exe(2)函數(shù) 主函數(shù)(或main函數(shù))(3)編輯 編譯 鏈接 2.(1)-(5):DDBBC(6)-(10):ABBBC 3.(1)答:C語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活;C語(yǔ)言是高級(jí)語(yǔ)言,同時(shí)具備了低級(jí)語(yǔ)言的特征;C語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,具有結(jié)構(gòu)化的程序控制語(yǔ)句;C語(yǔ)言有各種各樣的數(shù)據(jù)類(lèi)型;C語(yǔ)言可移植性好;生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。 (2)編輯、編譯、鏈接、執(zhí)行 (3)一個(gè)C程序由一或多個(gè)函數(shù)組成,一函數(shù)若干條語(yǔ)句構(gòu)成,每條語(yǔ)句的末尾必須以分號(hào)結(jié)束。 (4)標(biāo)識(shí)符,關(guān)鍵字,運(yùn)算符,分隔符,常量,注釋符等 4.從鍵盤(pán)輸入一個(gè)雙精度小數(shù),打印出它的余弦值。#include 第2章 1.(1)BDE、ACFG(2)D(3)C(4)C 2.(1)錯(cuò)(2)錯(cuò)(3)錯(cuò)(4)對(duì)(5)錯(cuò) 3.(1)a=3,b=-27(2)a=11,b=6,c=6(3)3(4)1 0 1 0 1 1 0(5)-9 9 8(6)1)20 2)8 3)70 4)0 5)0 6)0 4.(1) #include *n”);printf(“ ***n”);printf(“ *****n”);printf(“*******n”);}(4)#include 第4章 1.(1)-(5):CAACA 2.(1)BBB(2)AAABBBCCC(3)end(4)d=20(5)s=2,t=3(6)first third(7)y=0 y=5 y=10 y=5 3.(1)y ch>=?a?&&ch<=?z? ch = ch-32(3)x>2&&x<=10 x>-1&&x<=2(4)t=x;x=y;y=t;4.(1)#include if(x>y){ t=x;x=y;y=t;} if(x > z){ t = x;x = z;z= t;} if(y > z){ t = y;y= z;z = t;} printf(“%d %d %dn”, x, y ,z);}(2)#include if(score < 0 || score > 100) printf(“成績(jī)不合理n”); else if(score>=90) printf(“優(yōu)秀n”); else if(score>=80) printf(“良好n”); else if(score >= 70) printf(“中等n”); else if(score >= 60) printf(“及格n”); else printf(“不及格n”);}(3)#include scanf(“%d”, &n); g = n%10;//個(gè)位 s = n/10%10;//十位 b = n/100%10;//百位 q = n/1000%10;//千位 if(n < 10)//一位數(shù) { printf(“%dn”, 1);//位數(shù) printf(“%dn”, g);//各位上的數(shù)值 } else if(n < 100)//兩位數(shù) { printf(“%dn”, 2);//位數(shù) printf(“%d %dn”, g,s);} else if(n < 1000)//三位數(shù) { printf(“%dn”, 3);//位數(shù) printf(“%d %d %dn”, g, s, b); } else if(n < 10000)//四位數(shù) { printf(“%dn”, 4);//位數(shù) printf(“%d %d %d %dn”, g, s, b, q); } }(4)#include if(n % 3==0 && n%5==0 && n%7==0) printf(“能同時(shí)被3、5、7整除n”); else if(n%3==0 && n%5==0) printf(“能被3和5整除n”); else if(n%3==0 && n%7==0) printf(“能被3和7整除n”); else if(n%5==0 && n%7==0) printf(“能被5和7整除n”); else if(n%3==0 || n%5==0 || n%7==0){ if(n%3==0) printf(“能被3整除n”); else if(n%5==0) printf(“能被5整除n”); else printf(“能被7整除n”); } else printf(“不能被3、5、7中任一個(gè)數(shù)整除n”);}(5)#include carType;//車(chē)型。1代表夏利;2代表富康;3代表桑塔納 double xiali = 2.1;//每公里價(jià)格 double fukang = 2.4;double sangtana = 2.7;double distance;//距離 double totalMoney;//總的收費(fèi) printf(“請(qǐng)輸入您乘坐的車(chē)型:1代表夏利;2代表富康;3代表桑塔納:”);scanf(“%d”, &carType);printf(“請(qǐng)輸入您乘車(chē)的總路程:”);scanf(“%lf”, &distance);if(carType == 1)//夏利 { if(distance < 3) totalMoney = 7.0; else totalMoney = 7 + xiali *(distance – 3);} else if(carType == 2)//富康 { if(distance < 3) totalMoney = 8.0; else totalMoney = 8 + fukang *(distance – 3);} else if(carType == 3)//富康 { if(distance < 3) totalMoney = 9.0; else totalMoney = 9 + sangtana *(distance – 3);} printf(“(四舍五入)您的車(chē)費(fèi)為:%.0lfn”, totalMoney);}(6)#include if(a+b>c && b+c>a && c+a>b){ if(a==b && b==c) printf(“等邊三角形n”); else if(a==b || b== c || c==a) printf(“等腰三角形n”); else printf(“一般三角形n”); } else printf(“不能構(gòu)成三角形n”);} 第5章 1.(1)C(2)C(3)K=36(4)C(5)B 2.(1)3次 (2)x>=1 && x<=10 || x>=200&&x<210(3)e == 0(4)6次(5)10 3.(1)20,10(2)16,0(3)7BAB4BAB1BC(4)ABABABC(5)****** ****** ****** ****** 4.(1)a!= b (2)n / 10(3)scanf(“%d”, &a); 5.(3)行 int fac = 1, sum = 0;6.(1)#include { if(ch>=?A?&&ch<=?Z? || ch>=?a?&&ch<=?z?) alpha++; else if(ch>=?0? && ch<=?9?) digit++; else if(? ? == ch) space++; else other++;} printf(“%d %d %d %dn”, alpha, digit, space, other);}(2)#include for(m10 = 1;m10<10;m10++) if(20*m20+10*m10 == 100) printf(“%d, %dn”, m20, m10);} }(3)#include for(y=0;y<10;y++) for(z=0;z<10;z++) if(x*100+y*10+z + y*100+z*10+z == 532) printf(“%d %d %dn”, x, y, z);}(4)#include for(row = 1;row <= n;++row){ for(spaceCount = 1;spaceCount <= n1;++starCount) printf(“*”);//打印出某行上的所有星號(hào) printf(“n”);//換行 } //打印下半部分 for(row=1;row for(spaceCount = 1;spaceCount <= row;++ spaceCount) printf(“ ”);//打印出某行上星號(hào)前的空格 for(starCount = 1;starCount <= 2*(n-row)byear;if(nmonth age--;else if(nmonth == bmonth && nday>bday) age--;return age;} (4) #include int sum(int n){ int s=0;while(n){ s += n % 10; n /= 10;} return s;} (5) #include int i;for(i=1;i<=n;i++){ f *= i; s += f;} return f;} (6) #include r = m % n;while(r){ m = n; n = r; r = m % n;} return n;} (7) #include r = m % n;while(r){ m = n; n = r; r = m % n;} return n;} int lcm(int m, int n){ return m*n/gcd(m,n);} (8) #include int y;scanf(“%lf%d”, &x, &y);printf(“%lfn”, mypower(x,y));} double mypower(double x, int y){ int i;double f=1.0;for(i=1;i<=y;i++) f *= x;return f;} 第7章 1.(1)6(2)5(3)不能 (4)int a[3][2]={{1,2}, {3,4}, {5,6} };(5)6 9(6)abc G 2.(1) #include void reverse(int a[ ], int n); int main() { int array[10]={0}; int i; printf(“請(qǐng)輸入10個(gè)整數(shù):”); for(i=0;i<10;i++) scanf(“%d”, &array[i]); reverse(array, 10);//調(diào)用函數(shù)逆序存儲(chǔ)數(shù)組中的數(shù)據(jù) printf(“逆序后的元素為:n”); for(i=0;i<10;i++) printf(“%5d”, array[i]); printf(“n”); return 0; } void reverse(int a[ ], int n) { int i; int tmp; for(i=0;i { tmp = a[i];a[i] = a[n-i-1]; } } (2) #include void reverseStr(char str[ ]){ int i,j;char t;i=0;j=strlen(str)-1;while(i < j){ t = str[i]; a[n-i-1] = tmp; str[i] = str[j]; str[j] = t; i++; j--;} } (3) #include scanf(“%d”, &s1[i]);count = copyTo(s1, 10, s2);for(i=0;i printf(“%d ”, s2[i]);printf(“n”);} int copyTo(int s1[], int n, int s2[ ]){ int i, j=0;for(i=0;i if(s1[i] % 2) s2[j++] = s1[i];} return j;} (4) #include 第二篇:C語(yǔ)言程序設(shè)計(jì)教程課后習(xí)題答案
第三篇:C語(yǔ)言程序設(shè)計(jì)教程 課后習(xí)題參考答案