C語言程序設計習題3_第1頁
C語言程序設計習題3_第2頁
C語言程序設計習題3_第3頁
C語言程序設計習題3_第4頁
C語言程序設計習題3_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設計習題3習題 3 參考解答1. 什么是算法?常用描述算法的工具有哪些?解:所謂算法,就是計算機解決某一個問題的具體方法和步驟。 常用描述算法的工具有流程 圖、N-S 圖。2. 試用流程圖表示求 3 個數(shù)中的最大數(shù)的算 法。解:流程圖如圖 1-1 所示。圖 1-1 求 3 個數(shù)中的最大數(shù)的流程圖3. 什么是結構化程序設計?它的主要內容是 什么?解 : 結 構 化 程 序 設 計 ( structured programming)是進行以模塊功能和處理過程設 計為主的詳細設計的基本原則。 它的主要觀點是 采用自頂向下、 逐步求精的程序設計方法; 使用 3 種基本控制結構構造程序,任何程

2、序都可由順序、選擇、循環(huán)這 3 種基本控制結構構造 。4. 從鍵盤輸入 3 個整數(shù),按照從小到大的順序 輸出。解:#includeint main()int a,b,c,temp; scanf(%d,%d,%d,&a,&b,&c); if(ab)temp=a;a=b;b=temp; if(ac)temp=a;a=c;c=temp; if(bc)temp=b;b=c;c=temp; printf(%d,%d,%dn,a,b,c); return 0;程序運行情況如下:12,8,298,12,295. 輸入一個華氏溫度 F,要求輸出攝氏溫度 C。公式為5C 59 (F 32)要求要有文字說明,取兩

3、位小數(shù)。 解:#includeint main()float f,c;printf( 請輸入一個華氏溫度: n); scanf(%f,&f);c=5*(f-32)/9;printf(%.2fn,c);return 0; 程序運行情況如下: 請輸入一個華氏溫度: 362.226輸入一個三位整數(shù), 要求輸出它的百位數(shù)、 十位數(shù)和個位數(shù)。解:#includeint main()int num;/* num 表示一個三位整數(shù) */int a,b,c;/* a,b,c 分別表示百位、十位和個位上的數(shù)字 */scanf(%d,&num);a=num/100;b=(num-a*100)/10;c=num-a

4、*100-b*10;printf(%d,%d,%dn,a,b,c);return 0;程序運行情況如下:1231,2,37小紅有面值 1 分的硬幣 638 枚,可以兌換 成幾元幾角剩余幾分?說明:100 枚 1 分的硬幣可以兌換成 1 元,10枚 1 分的硬幣可以兌換成 1 角。兌換原則是面額從大到小。解:#includeint main()int a=638;int yuan;int jiao;int fen,temp; yuan=a/100; temp=a%100; jiao=temp/10; fen=temp%10;printf(1 元的數(shù)量: %dn,yuan);printf(1 角的

5、數(shù)量: %dn,jiao);printf(1 分的數(shù)量: %dn,fen); return 0; 程序運行結果如下:1 元的數(shù)量: 61 角的數(shù)量: 31 分的數(shù)量: 88設圓柱的半徑為 2.5,圓柱的高為 4,求圓 柱的體積。用 scanf 函數(shù)輸入數(shù)據(jù), printf 函數(shù) 輸出計算結果, 輸出時要求有文字說明, 取兩位小數(shù)解:#include#define PI 3.1415926int main()float r,h,v; printf(Please input r,h:); scanf(%f,%f,&r,&h); v=PI*r*r*h;printf( 半徑為:%.2f, 高為:%.2

6、f 的圓柱體體積為: %.2fn,r,h,v);return 0; 程序運行情況如下: Please input r,h:2.54, 半徑為: 2.50,高為: 4.00 的圓柱體體積為:78.54 9輸入三角形的三邊,計算三角形的面積。要求:對輸入的 3 個邊長進行判斷, 如果能構成 三角形,則計算三角形的面積; 否則,則顯示“構 不成三角形!”信息。解:#include#includeint main()int a,b,c;float s,area;scanf(%d,%d,%d,&a,&b,&c);if(a+bc & a+cb &b+ca)s=(float)(a+b+c)/2; area=

7、sqrt(s*(s-a)*(s-b)*(s-c); printf( 面積為: %.2fn,area);elseprintf( 邊長分別為 %d、%d 、%d 的三 邊構不成三角形! n,a,b,c);return 0;程序運行情況如下:3,4,6面積為: 5.333,6,12邊長分別為 3、6、12 的三邊構不成三角形 !10設計一個 C 語言程序,求 5 個數(shù)中的最 大數(shù)和最小數(shù)。解:#includeint main()int a,b,c,d,e,max,min; scanf(%d%d%d%d%d,&a,&b,&c,&d, &e);max=min=a;if(bmax) max=b;if(bm

8、ax) max=c;if(cmax) max=d;if(dmax) max=e;if(emin) min=e; printf(max:%d,min:%dn,max,min); return 0;程序運行情況如下:2 5 6 8 9 max:9,min:211判斷輸入的字符屬于哪一類字符: 母、小寫字母、數(shù)字還是其他字符。解:#includeint main()char ch; scanf(%c,&ch);if(ch=48 &ch=65&ch=97&ch=122) printf( 該字符為小寫字母! else大寫字);printf( 該字符為其他字符! ); return 0;程序運行情況如下:

9、2該字符為數(shù)字!12用 if 語句和 switch語句分別編寫程序, 實現(xiàn)以下功能:從鍵盤輸入數(shù)字 1, 2,3, 4,分別顯示 Excellent,Good,Pass,F(xiàn)ail。輸入其他字符時 顯示 Error 。解:/*用 if 語句編寫程序 */#includeint main()char ch;scanf(%c,&ch);if(ch=1)printf(Excellentn);else if (ch=2)printf(Goodn);else if (ch=3)printf(Passn);else if (ch=4)printf(Failn);elseprintf(Errorn);retu

10、rn 0;程序運行情況如下:1Excellent/* 用 switch語句編寫程序 */#includeint main()char ch;scanf(%c,&ch);switch(ch)case 1:printf(Excellentn);break;case 2:printf(Goodn);break;case 3:printf(Passn);break;case 4:printf(Failn);break;default:printf(Errorn);程序運行情況如下:1Excellent13假設國家對個人收入所得稅是按這樣的標 準進行的:起征點是 2 000元,2 0003 000元為

11、5%,3 0005 000元為 15%,5 00010 000元為 20% ,10 000 元以上為 30%。編程輸入工資, 計算實際工資所得及稅金。解:#includeint main()int gz;float sj;scanf(%d,&gz);if(gz2000)printf( 不需要納稅! n);return ;else if(gz3000)sj=gz*0.05;else if(gz5000) sj=gz*0.15;else if(gz0 時,有兩個不等的實根;當 b2-4ac=0 時,有兩個相等的實根;當 b2-4ac0 時,有兩個虛根。解:#include#includeint m

12、ain()int a,b,c;double delt,x1,x2;scanf(%d%d%d,&a,&b,&c); delt=b*b-4*a*c;if (delt=0)printf( 該方程有兩個相等的實根! ); x1=x2=-(double)b/(2*a); printf(%.2f,%.2fn,x1,x2);elseif(delt=0)x1=(-b+sqrt(delt)/(2*a); x2=(-b-sqrt(delt)/(2*a); printf(%.2f,%.2fn,x1,x2);elseprintf( 該方程無實根! n);程序運行情況如下:3 4 5 該方程無實根!4 6 2 -0.5

13、0,-1.004 4 1 該方程有兩個相等的實根! -0.50,-0.50 15從 1100中找出能被 5 或 7 整除的數(shù) 解:#includeint main()int i;for(i=1;i=100;i+)if(i%5=0|i%7=0) printf(%5d,i);return 0;程序運行結果如下:557101415202125283035404245495055566063657075778084859091959810016計算 sum=1+11+111+1111+1111。1 解:#includeint main()int i,t=0,s=0;for(i=1;i=5;i+)t=t

14、*10+1;printf(%dn,t);s=s+t;printf(%d,s);return 0; 程序運行結果如下:1111111111111111234517輸入兩個正整數(shù) m 和 n,求出它們的最 大公約數(shù)和最小公倍數(shù)。解:#includeint main()int m,n,t,gcd,gcm;int a,b;scanf(%d%d,&m,&n);t=m%n;a=m;b=n;while(t!=0) m=n; n=t;t=m%n; gcd=n; gcm=a*b/gcd;printf(%d 和%d 的最大公約數(shù)為 :%d, 最 小公倍數(shù)為 :%dn,a,b,gcd,gcm);return 0;

15、程序運行情況如下:25 1525 和 15 的最大公約數(shù)為 :5,最小公倍數(shù)為 :7518輸入一行字符,分別統(tǒng)計出其中英文字母、 空格、數(shù)字和其他字符的個數(shù)。解:#includeint main()char ch;int m=0;int k=0;int n=0;int t=0; ch=getchar(); while(ch!=n) if(ch=32) k+;else if(ch=48& ch=65& ch=97& ch=122)m+;elset+; ch=getchar();printf( 字母的個數(shù)為: %dn,m);printf( 空格的個數(shù)為: %dn,k); printf( 數(shù)字的個數(shù)

16、為: %dn,n);printf( 其他字符的個數(shù)為: %dn,t);return 0;程序運行情況如下:123abcdefghyyyy; 11166 #%字母的個數(shù)為: 12空格的個數(shù)為: 2數(shù)字的個數(shù)為: 8其他字符的個數(shù)為: 1119從鍵盤輸入 10 個學生的成績,試統(tǒng)計出 他們的成績總和及平均值。解:#includeint main()float cj,sum=0,aver; int i;for(i=1;i=10;i+)scanf(%f,&cj); sum=sum+cj;aver=sum/10;printf(sum=%.2f,aver=%.2f,sum,aver); return 0;

17、程序運行情況如下:68 75 74 56 78 75 81 76 75 85 sum=743.00,aver=74.30 20猴子吃桃問題。 猴子第一天摘下了若干桃 子,當即吃了一半,還不過癮,又多吃了一個。 第二天早上又將剩下的桃子吃掉一半, 又多吃了 一個。以后每天早上都吃了前一天剩下的一半零 一個。到第 4 天早上想要再吃時, 只剩下一個桃 子了。求第一天猴子共摘了多少桃子。解:#includeint main()int n=1;int i;for(i=9;i=1;i-)n=2*(n+1);printf(%dn,n);return 0;程序運行結果如下:41022469419038276

18、6153421打印出所有的“水仙花數(shù)” 。所謂“水仙 花數(shù)”是指一個三位數(shù), 其各位數(shù)字立方和等于 該數(shù)本身。例如, 153 就是一個水仙花數(shù),因為 153=13+53+33解:#include int main()int i,bw,sw,gw;printf( 水仙花數(shù)是: ); for(i=100;i999;i+) bw=i/100; sw=(i-bw*100)/10; gw=i-bw*100-sw*10;if(i=bw*bw*bw+sw*sw*sw+gw*gw*gw) printf(%5d,i); printf(n); return 0; 程序運行結果如下: 水仙花數(shù)是: 153 370

19、371 407 22用泰勒級數(shù)求 e 的近似值,直到最后一 項小于 10-6 為止。e=1+1/1!+1/2!+1/3!+1/n! 解:#include int main() int i=1; long f=1; double t=1,e=1; while(t=1e-6) e=e+t; i=i+1; f=f*i; t=(double)1/f; printf(%.3lfn,e);return 0; 程序運行結果如下: 2.718 23輸入一個整數(shù),分解各位數(shù)字。例如,輸 入“ 1298”,輸出“ 8-9-2-1-”。請編寫一個 C 語 言程序解決該問題。解: #include int main(

20、) int num,n1,n2; scanf(%d,&num); n2=num; while(n2!=0) n1=n2%10; n2=n2/10; printf(%d-,n1); printf(n); return 0; 程序運行情況如下: 1298 8-9-2-1-24有一個分數(shù)序列 2/1, 3/2, 5/3,8/5, 13/8,21/13求出這個數(shù)列的前 20 項之和。解:#includeint main()int i;float f,s=0;float f1=1;float f2=1;for(i=1;i=20;i+)f=f1+f2;f1=f2;f2=f;s=s+f2/f1;%f,s) ;printf( 分數(shù)序列之和為:return 0;程序運行結果如下: 分數(shù)序列之和為: 32.66025925打印出以下圖案。解:#includeint main()int i,j;f

溫馨提示

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

最新文檔

評論

0/150

提交評論