譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案整本書(shū).doc_第1頁(yè)
譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案整本書(shū).doc_第2頁(yè)
譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案整本書(shū).doc_第3頁(yè)
譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案整本書(shū).doc_第4頁(yè)
譚浩強(qiáng)C程序設(shè)計(jì)第三版課后答案整本書(shū).doc_第5頁(yè)
已閱讀5頁(yè),還剩124頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C程序設(shè)計(jì)(第三版)課后習(xí)題參考解答1.6 寫(xiě)一個(gè)程序,輸入a,b,c三個(gè)值,輸出其中最大者。解:main ( )int a,b,c,max;printf(“請(qǐng)輸入三個(gè)數(shù)a,b,c: n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if (maxb)max=b;if (maxc)max=c;printf(“ 最大數(shù)為:%d ”,max);第2章 程序的靈魂算法2.1 什么叫結(jié)構(gòu)化的算法?為什么要提倡結(jié)構(gòu)化的算法?解:由一些基本結(jié)構(gòu)順序組成的算法稱為結(jié)構(gòu)化的算法。由于在基本結(jié)構(gòu)之間不存在非順序的跳轉(zhuǎn),流程的轉(zhuǎn)移只存在于一個(gè)基本結(jié)構(gòu)范圍之內(nèi),因而提高了算法的質(zhì)量。2.7 什么叫結(jié)構(gòu)化程序設(shè)計(jì)?它的主要內(nèi)容是什么?解:結(jié)構(gòu)化程序就是用高級(jí)語(yǔ)言表示的結(jié)構(gòu)化算法。它的主要內(nèi)容包括“自頂向下,逐步細(xì)化”的分析方法和“模塊化設(shè)計(jì)”的解決方法,以及“結(jié)構(gòu)化編碼”的實(shí)現(xiàn)方法。第3章 數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式33請(qǐng)將下面各數(shù)用八進(jìn)制和十六進(jìn)制數(shù)表示:(1)10 (2)32 (3)75 (4)617(5)111 (6)2483 (7)28654 (8)21003解:(1) (10) 10(12) 8(A) 16(2) (32)10=(40)8=(20) 16(3) (75)10=(113)8=(4B) 16(4) (617)10=(176627)8=(FD97) 16此題可以這樣考慮:帶符號(hào)數(shù)在計(jì)算機(jī)中采用補(bǔ)碼表示,正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼模真值。若使用16位存儲(chǔ),模為21665536。617的補(bǔ)碼為65536(167)64919(176627)8(FD97)16(5) (111)10=(177621)8=(FF91) 16(6) (2483)10=(4663)8=(9B3) 16(7) (28654)10=(110022)8=(9012) 16(8) (21003)10=(51013)8=(520B) 1634將以下三各整數(shù)分別賦給不同類(lèi)型的變量,請(qǐng)畫(huà)出賦值后數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式。變量的類(lèi)型25232769int型long型sort型signed char(8位)unsigned int型unsigned long型unsigned short型unsigned char型注:如果沒(méi)有學(xué)過(guò)二進(jìn)制和補(bǔ)碼,此題可以不做。解:各數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式如下表所示:變量的類(lèi)型25232769int型00 0000110018 位1111111111111110 15 100 001(溢出) 14long型00 000011001 2411 1110 3100 0100 001 16 14short型00 00001100181111111111111110 15100 001(溢出) 14signed char(8位)000110011111111000000001(溢出)unsigned int型00 0000110018 11 110 15100 001 14unsigned long型00 0000110012411 110 3100 0100 001 16 14unsigned short型00 0000110018 11 110 15100 001 8unsigned char型000110011111111000000001其中int和short類(lèi)型,其取值范圍是3276832767。32769在這兩種類(lèi)型中實(shí)際表示負(fù)數(shù),它是一個(gè)負(fù)數(shù)的補(bǔ)碼,對(duì)其再求一次補(bǔ)碼可得其真值,即(6553632769)32767。char和unsigned char為8位,若將int或long類(lèi)型數(shù)據(jù)賦給這種類(lèi)型,則截取數(shù)據(jù)低8位。同理,若將long賦給int,則截取低16位。35字符常量和字符串常量有什么區(qū)別?解:字符常量是一個(gè)字符,用單引號(hào)括起來(lái)。字符串常量是由0個(gè)或若干個(gè)字符組合而成,用雙引號(hào)括起來(lái),存儲(chǔ)時(shí)自動(dòng)在字符串最后加一個(gè)結(jié)束符號(hào)0。36寫(xiě)出以下程序運(yùn)行的結(jié)果:# includevoid main ( ) char c1=a, c2=b, c3=c, c4=101, c5=116; printf (“a%c b%ct c%ct abcn”, c1, c2, c3); printf (“tb%c %c”, c4, c5);解:程序運(yùn)行的結(jié)果為:aa bb cc abc A N37要將“China”譯成密碼,密碼規(guī)律是:用原來(lái)的字母后面第4個(gè)字母代替原來(lái)的字母。例如,字母“A”后面第4個(gè)字母是“E”,用“E”代替“A”。因此,“China”應(yīng)譯為“Glmre”。請(qǐng)編一程序,用賦初值的方法使c1,c2,c3,c4,c5這5個(gè)變量的值分別為C,h,i,n,a,經(jīng)過(guò)運(yùn)算,使c1,c2,c3,c4,c5的值分別變?yōu)镚,l,m,r,e,并輸出。解:main ( ) char cl=C, c2=h, c3=i, c4=n, c5=a; c1+=4; c2+=4;c3+=4;c4+=4;c5+=4;printf(“密碼是cccccn, c1, c2, c3, c4, c5);運(yùn)行結(jié)果:密碼是Glmre38例2.6能否改成如下: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),用整型和用字符型作用相同。39求下面算術(shù)表達(dá)式的值。(1) x+a%3*(int)(x+y)%2/4設(shè)x=2.5,a=7,y=4.7(2) (float)(a+b)/2+(int)x%(int)y設(shè)a=2,b=3,x=3.5,y=2.5解:(1)2.5(2)3.5 310寫(xiě)出程序運(yùn)行的結(jié)果。main ( ) int i, j, m, n; i=8; j=10; m=+i; n=j+; printf (“%d, %d, %d, %d”, i, j, m, n);解:運(yùn)行結(jié)果為:9,11,9,10311寫(xiě)出下面賦值的結(jié)果。格中寫(xiě)了數(shù)值的是要將它賦給其他類(lèi)型的變量,將所有空格填上賦值后的數(shù)值。int9942chardunsigned int7665535float53.65long int68解:int99100765368421charcdL5D*unsigned int991007653684265535float99.000000100.00000076.00000053.6568.00000042.00000065535.000000long int9910076536842655353.12 出下面表達(dá)式運(yùn)算后a的值,設(shè)原來(lái)a=12。設(shè)a和n都已定義為整型變量。(1)a+=a (2)a-=2 (3)a*=2+3(4)a/=a+a(5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a解:(1)24 (2)10(3)60 (4)0(5)0 (6)0 第4章 最簡(jiǎn)單的C程序設(shè)計(jì)順序程序設(shè)計(jì)4.4 若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51247,n=128765,c1=a,c2=b,想得到以下的輸出格式和結(jié)果,請(qǐng)寫(xiě)出程序(包括定義變量類(lèi)型和設(shè)計(jì)輸出)。要求輸出的結(jié)果如下:a=3b=4c=5x= 1.200000,y= 2.400000,z= -3.600000x+y=3.60y+z=-1.20z+x=-2.40u= 51247n=128765c1=aor97(ASCII)c2=bor98(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=51247;n=128765; c1=a;c2=b; printf(“n”); printf(“a=%2db=%2dc=%2dn”,a,b,c); printf(“x=%.6f,y=%.6f,z=%.6fn”,x,y,z); printf(“x+y=%.2fy+z=%.2fz+x=%.2fn”,x+y,y+z,z+x); printf(“u=%6ldn=%9ldn”,u,n); printf(“c1=%c or %d(ASCII)n”,c1,c1); printf(“c2=%c or %d(ASCII)n”,c2,c2);45請(qǐng)寫(xiě)出下面程序的輸出結(jié)果:main ( ) int a=5,b=7; float x=67.8564,y=-789.124; char c=A; long n=1234567; unsigned u=65535; printf(“%d%dn”,a,b); printf(“%3d%3dn”,a,b); printf(“%f,%fn”,x,y); printf(“%-10f,%-10fn”,x,y); printf(“%8.2f, %8.2f,%4f, %4f, %3f, %3fn”,x,y,x,y,x,y); printf(“%e,%10.2en”,x,y); printf(“%c,%d,%o,%xn”,c,c,c,c); printf(“%ld,%lo,%xn”,n,n,n); printf(“%u,%o,%x,%dn”,u,u,u,u); printf(“%s,%5.3sn”,”COMPUTER”,”COMPUTER”);運(yùn)行結(jié)果:575767.856400, -789.12402367.856400, -789.12402367.86,-789.12,67.8564,-789.1240,67.856400,-789.1240236.785640e+01,-7.9e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER,COM可以發(fā)現(xiàn),輸出數(shù)據(jù)中若有負(fù)號(hào)、e和小數(shù)點(diǎn),這些字符也占位。4.6 用下面的scanf函數(shù)輸入數(shù)據(jù),使a=3,b=7,x=8.5,y=71.82,c1=A,c2=a。問(wèn)在鍵盤(pán)上如何輸入?#include void main()int a , b;float x , y;char c1 ,c2;scanf(“a=%d b=%d”,&a , &b);scanf(“ %f %e”,&x , &y);scanf(“ %c %c”,&c1 , &c2);解:a=3b=78.571.82Aa4.7下面的scanf函數(shù)輸入數(shù)據(jù),使a=10,b=20,c1=A,c2=a,x=1.5,y=-3.75,z=67.8,請(qǐng)問(wèn)在鍵盤(pán)上如何輸入數(shù)據(jù)?scanf(“%5d%5d%c%c%f%f%*f,%f”,&a,&b,&c1,&c2,&x,&y,&z);解:main ( ) int a,b;float x,y,z; char c1,c2; scanf(“%5d%5d%c%c%f%f%*f,%f”,&a,&b,&c1,&c2,&x,&y,&z); printf(“a=%d, b=%d, c1=%c, c2=%c, x=%6.2f, y=6.2f, z=6.2fn”),a,b,c1,c2,x,y,z);運(yùn)行情況如下:1020Aa1.5 3.751.5,67.8 (此行為輸入的數(shù)據(jù),其中為空格)a=10, b=20, c1=A, c2=a, x=1.50, y=-3.75, z=67.80 (此行為輸出)說(shuō)明:按%5d格式的要求輸入a和b時(shí),要先鍵入三個(gè)空格,然后再鍵入10與20。%*f是用來(lái)禁止賦值的。在輸入時(shí),對(duì)應(yīng)于%*f的地方,隨意打入了一個(gè)數(shù)1.5,該值不會(huì)賦給任何變量。4.8圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長(zhǎng),圓面積,圓球表面積,圓球體積,圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求有文字說(shuō)明,取小數(shù)點(diǎn)后2位數(shù)字。請(qǐng)編程序。解:main ( ) float pi,h,r,l,s,sq,vq,vz; pi=3.1415926; printf(“請(qǐng)輸入圓半徑r,圓柱高h(yuǎn):n”); scanf(“%f,%f”,&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=3.0/4.0*pi*r*r*r; vz=pi*r*r*h; printf(“圓周長(zhǎng)為: l=%6.2fn”,l); printf(“圓面積為: s=%6.2fn”,s); printf(“圓球表面積為: sq=%6.2fn”,sq); printf(“圓球體積為: sv=%6.2fn”,vq); printf(“圓柱體積為: sz=%6.2fn”,vz);運(yùn)行結(jié)果:請(qǐng)輸入圓半徑r,圓柱高h(yuǎn):1.5,3圓周長(zhǎng)為: l=9.42圓面積為: s=7.07圓球表面積為: sq=28.27圓球體積為: sv=7.95圓柱體積為: sz=21.214.9輸入一個(gè)華氏溫度,要求輸出攝氏溫度,公式為C=(5/9)(F-32)輸出要有文字說(shuō)明,取2位小數(shù)。解:main ( ) float c,f; printf(“請(qǐng)輸入一個(gè)華氏溫度:n”);scanf(“%f”,&f); c=(5.0/9.0)*(f-32); /*注意5和9要用實(shí)型表示,否則5/9的值為0*/ printf(“攝氏溫度為:%5.2fn”,c); ;運(yùn)行結(jié)果:請(qǐng)輸入一個(gè)華氏溫度:78攝氏溫度為:25.56第5章 選擇結(jié)構(gòu)程序設(shè)計(jì)5.2語(yǔ)言中如何表示“真”和“假”?系統(tǒng)如何判斷一個(gè)量的“真”和“假”?解:設(shè)有一個(gè)邏輯表達(dá)式,若其結(jié)果為“真”,則以1表示;若其結(jié)果為“假”,則以0表示。但是判斷一個(gè)邏輯量的值時(shí),以0代表“真”,以非0代表“假”。例如3&5的值為“真”,系統(tǒng)會(huì)給出3&5的值為1。5.3寫(xiě)出下面各邏輯表達(dá)式的值。設(shè)a=3,b=4,c=5。(1)a+bc&b=c(2)a|b+c&b-c(3)!(ab)&!c|1(4)!(x=a)&(y=b)&0(5)!(a+b)+c-1&b+c/2解:(1)0(2)1(3)1(4)0(5)15.4有3個(gè)整數(shù)a,b,c,由鍵盤(pán)輸入,輸出其中最大的數(shù)。解:方法一:程序如下:main ( ) int a,b,c; printf(“請(qǐng)輸入3個(gè)整數(shù):”); scanf(“%d,%d,%d”,&a,&b,&c); if (ab) if (bc)printf(“max=%dn”,c); elseprintf(“max=%dn”,b); else if (ab)? a:b; /* 將a和b中的大者存入temp中 */ max=(tempc)? temp:c; /* 將a和b中的大者與c比較,取最大者 */ printf(“3個(gè)整數(shù)中最大數(shù)是%dn”,max);方法三:ab?(ac?a:c):(bc?b:c)運(yùn)行結(jié)果:請(qǐng)輸入3個(gè)整數(shù):12,34,93個(gè)整數(shù)的最大數(shù)是34。5.5有一函數(shù): 寫(xiě)一程序,輸入x值,輸出y值。解:程序如下main ( ) int x,y; printf(“輸入x:”); scanf(“%d”,&x); if (x1) /* x1 */ y=x; printf(“x=%d3d, y=x=%dn”,x,y); else if (x10) /* 1x100 | score9999)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=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);switch(place)case 5:printf(“%d,%d,%d,%d,%d”,ten_thousand,thousand,hundred,ten,indiv);printf(“n反序數(shù)字為:”);printf(“%d%d%d%d%dn”,indiv,ten,hundred,thousand,ten_thousand);break;case 4:printf(“%d,%d,%d,%d”,thousand,hundred,ten,indiv); printf(“n反序數(shù)字為:”);printf(“%d%d%d%d n”,indiv,ten,hundred,thousand);break;case 3:printf(“%d,%d,%d”,hundred,ten,indiv); printf(“n反序數(shù)字為:”);printf(“%d%d%d n”,indiv,ten,hundred);break;case 2:printf(“%d,%d”, ten,indiv); printf(“n反序數(shù)字為:”);printf(“%d%d n”,indiv,ten);break;case 1:printf(“%d”, indiv); printf(“n反序數(shù)字為:”);printf(“%dn”,indiv);break; 運(yùn)行結(jié)果:請(qǐng)輸入一個(gè)整數(shù)(099999):98765位數(shù)5每位數(shù)字為:9,8,7,6,5反序數(shù)字為:567895.8企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)I低于或等于10萬(wàn)元時(shí),獎(jiǎng)金可提10;利潤(rùn)高于10萬(wàn)元,低于20萬(wàn)元(100000I200000)時(shí),其中10萬(wàn)元按10提成,高于10萬(wàn)元的部分,可提成7.5%;200000I400000時(shí),其中20萬(wàn)元仍按上述辦法提成(下同),高于20萬(wàn)元的部分按5提成;400000I600000時(shí),高于40萬(wàn)元的部分按3提成;6000001000000時(shí),超過(guò)100萬(wàn)的部分按1提成。從鍵盤(pán)輸入當(dāng)月利潤(rùn)I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)。要求:(1)用if語(yǔ)句編程序;(2)用switch語(yǔ)句編程序。解:計(jì)算利潤(rùn)時(shí),要特別注意不同利潤(rùn)的不同提成比例。例如,利潤(rùn)為15萬(wàn)元,其中由10萬(wàn)元按10的比例提成,另外5萬(wàn)元?jiǎng)t按7.5%提成。(1) 用if語(yǔ)句編程序,main ( ) long i; float bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1; /*利潤(rùn)為10萬(wàn)元時(shí)的獎(jiǎng)金*/ bon2=bon1+100000*0.075 /*利潤(rùn)為20萬(wàn)元時(shí)的獎(jiǎng)金*/ bon4=bon2+100000*0.05 /*利潤(rùn)為40萬(wàn)元時(shí)的獎(jiǎng)金*/ bon6=bon4+100000*0.03 /*利潤(rùn)為60萬(wàn)元時(shí)的獎(jiǎng)金*/ bon10=bon6+400000*0.015; /*利潤(rùn)為100萬(wàn)元時(shí)的獎(jiǎng)金*/ printf(“請(qǐng)輸入利潤(rùn)i:”); scanf(“%ld”,&i); if (i=100000) bonus=i*0.1; /*利潤(rùn)在10萬(wàn)元以內(nèi)按0.1提成獎(jiǎng)金*/ else if (i=200000) bonus=bon1+(i-100000)*0.075 /*利潤(rùn)在10萬(wàn)至20萬(wàn)元時(shí)的獎(jiǎng)金*/ else if (i=400000) bonus=bon2+(i-200000)*0.05 /*利潤(rùn)在20萬(wàn)至40萬(wàn)元時(shí)的獎(jiǎng)金*/ else if (i=600000) bonus=bon4+(i-400000)*0.03 /*利潤(rùn)在40萬(wàn)元至60萬(wàn)元時(shí)的獎(jiǎng)金*/ else if (i10) then c=10; switch (c) 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-1000000)*0.01; printf(“獎(jiǎng)金是%10.2f”,bonus);運(yùn)行結(jié)果:請(qǐng)輸入利潤(rùn)i:234000獎(jiǎng)金是:19200.005.9輸入4個(gè)整數(shù),要求按由小到大的順序輸出。解:程序如下#include stdio.hvoid main() int t,a,b,c,d; printf(請(qǐng)輸入4個(gè)整數(shù):); scanf(%d,%d,%d,%d,&a,&b,&c,&d); printf(a=%d,b=%d,c=%d,d=%d,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(排序結(jié)果如下:n); printf(%d %d %d %dn,a,b,c,d);5.10有4個(gè)圓塔,圓心分別為(2,2),(2,2),(2,2),(2,2),圓半徑為1。見(jiàn)圖4.4。這4個(gè)塔的高度分別為10m。塔以外無(wú)建筑物。今輸入任一點(diǎn)的坐標(biāo),求該點(diǎn)的建筑高度(塔外的高度為0)。解:程序如下main ( ) int h=10; float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4; printf(“請(qǐng)輸入一個(gè)點(diǎn)(x,y):”); scanf(“%f,%f”,&x,&y); /*求該點(diǎn)到各中心點(diǎn)的距離*/ d1=(x-x1)*(x-x1)+(y-y1)* (y-y1); 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 (d11 & d21 & d31 & d41) h=0; /*判斷該點(diǎn)是否在塔外*/ printf(“該點(diǎn)高度為%d”,h);運(yùn)行情況:請(qǐng)輸入一個(gè)點(diǎn)(x,y):0.5,0.7該點(diǎn)高度為0請(qǐng)輸入一個(gè)點(diǎn)(x,y):2.1,2.3該點(diǎn)高度為10第6章 循環(huán)控制6.1輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。解:用輾轉(zhuǎn)相除法求最大公約數(shù)main ( ) int p,r,n,m,temp; printf(“請(qǐng)輸入兩個(gè)正整數(shù)n,m:”); scanf(“%d,%d”,&n,&m); if (nm) temp=n; n=m; m=temp; /*把大數(shù)放在n中,小數(shù)放在m中*/ p=n*m; /*先將m和n的乘積保存在p中,以便求最小公倍數(shù)時(shí)用*/while (m!=0) /*求m和n的最大公約數(shù)*/ r=n%m; n=m; m=r; printf(“它們的最大公約數(shù)為:%dn”,n);printf(“它們的最小公倍數(shù)為:%dn”,p/n); /*p是原來(lái)兩個(gè)整數(shù)的乘積*/運(yùn)行情況:請(qǐng)輸入兩個(gè)正整數(shù):12,8它們的最大公約數(shù)為:4它們的最小公倍數(shù)為:246.2輸入一行字符,分別統(tǒng)計(jì)出其中英文字母,空格,數(shù)字和其它字符的個(gè)數(shù)。解:#include main ( ) char c; int letter=0,space=0,digit=0,other=0; printf(“請(qǐng)輸入一行字符:n”); while(c=getchar( )!=n) if (c=a & c=A & c=0 & c=9) digit+;else other+; printf(“字母數(shù)%d,空格數(shù)%d,數(shù)字?jǐn)?shù)%d,其它字符數(shù)=%dn”,letter,space,digit,other);運(yùn)行情況:請(qǐng)輸入一行字符:My teachers address is “#123 Beijing Road,Shanghai”.字母數(shù):38,空格數(shù):6,數(shù)字?jǐn)?shù):3,其它字符數(shù):66.3求Sn=a+aa+aaa+aaa之值,其中a是一個(gè)數(shù)字。例如:222222222222222 n個(gè)a(此時(shí)n5),n由鍵盤(pán)輸入。解:main ( ) int a,n,i=1,sn=0,tn=0; printf(“a,n= :”); scanf(“%d,%d”,&a,&n); while (i=n) tn=tn+a; /*賦值后的tn為i個(gè)a組成數(shù)的值*/ sn=sn+tn; /*賦值后的sn為多項(xiàng)式前I項(xiàng)之和*/ a=a*10; +i;printf(“a+aa+aaa+=%dn”,sn);運(yùn)行情況:a,n:2,5a+aa+aaa+=246906.4求n!(即求1+2!+20!)。解:main ( )float s=0,t=1; int n; for (n=1;n=20;n+)t=t*n; /*求n!*/s=s+t; /*將各項(xiàng)累加*/ printf(“1!+2!+20!=%en”,s);運(yùn)行結(jié)果:1!+2!+20!=2.56133e+18注意:s不能定義為int型,因?yàn)閕nt型數(shù)據(jù)的范圍是-3276832767;也不能定義為long型,因?yàn)閘ong型數(shù)據(jù)的范圍為21億21億,無(wú)法容納求得的結(jié)果。6.5求解:#include stdio.h#include conio.hmain() int n1=100,n2=50,n3=10,k; float s1=0,s2=0,s3=0; for(k=1;k=n1;k+) s1+=k; for(k=1;k=n2;k+) s2+=k*k; for(k=1;k=n3;k+) s3+=1.0/k; printf(sum=%8.2fn,s1+s2+s3); getch();運(yùn)行結(jié)果:47977.93。6.6打印出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個(gè)3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如,153是一個(gè)“水仙花數(shù)”,因?yàn)?53135333。解:main ( ) int i,j,k,n; printf(“水仙花數(shù)”是:”); for (n=100;n1000;n+)i=n/100; j=n/10-i*10; k=n%10; if (n=i*i*i+j*j*j+k*k*k) printf(“%4d”,n); printf(“n”);運(yùn)行結(jié)果:“水仙花數(shù)“是:153 370 371 4076.7一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)“。例如,6的因子為1,2,3,而6=1+2+3,因此6是“完數(shù)”。編程序找出1000以內(nèi)的所有“完數(shù)”,并按下面的格式輸出其因子:6 Its factors are 1,2,3解:方法一:#define M 1000 /*定義尋找范圍*/main ( ) int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10; int i,a,n,s; for (a=2;a=M;a+) /*a是21000之間的整數(shù),檢查它是否完數(shù)*/n=0; /*n用來(lái)累計(jì)a的因子的個(gè)數(shù) s=a; /*s用來(lái)存放尚未求出的因子之和,開(kāi)始時(shí)等于a*/ for ( i=1;i1) printf(“%d,%d”,k1,k2); /*n1表示a至少有2個(gè)因子*/ if (n2) printf(“,%d”,k3); /*n2表示至少有3個(gè)因子,故應(yīng)再輸入一個(gè)因子*/ if (n3) printf(“,%d”,k4); /*以下類(lèi)似*/ if (n4) printf(“,%d”,k5);if (n5) printf(“,%d”,k6);if (n6) printf(“,%d”,k7);if (n7) printf(“,%d”,k8);if (n8) printf(“,%d”,k9);if (n9) printf(“,%d”,k10); printf(“n”); 運(yùn)行結(jié)果:6 Its factors are 1,2,328 Its factors are 1,2,4

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論