.c程序設(shè)計(jì)譚浩強(qiáng)第二章習(xí)題與答案_第1頁
.c程序設(shè)計(jì)譚浩強(qiáng)第二章習(xí)題與答案_第2頁
.c程序設(shè)計(jì)譚浩強(qiáng)第二章習(xí)題與答案_第3頁
.c程序設(shè)計(jì)譚浩強(qiáng)第二章習(xí)題與答案_第4頁
.c程序設(shè)計(jì)譚浩強(qiáng)第二章習(xí)題與答案_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2.4點(diǎn))。習(xí)題2.1 答:什么是算法?是從日常生活中找三個(gè)例子,描述他們的算法? 對(duì)操作的描述,即操作步驟,就是算法。 廣義的說;為解決一個(gè)問題而采取的方法和步驟,就稱為“算法 ”。例:2.2 答:(略)什么叫結(jié)構(gòu)化的算法?為什么要提倡結(jié)構(gòu)化的算法? 由基本節(jié)構(gòu)所構(gòu)成的算法屬于 “結(jié)構(gòu)化 ”的算法。結(jié)構(gòu)化的算法便于編寫、閱讀、便于修改和維護(hù)。這就減少了程序出錯(cuò)的機(jī)會(huì)、提高了 程序的可靠性,保證了程序的質(zhì)量。2.3試述三種基本結(jié)構(gòu)的特點(diǎn),你能否自己另外設(shè)計(jì)兩種基本結(jié)構(gòu)(要符合基本結(jié)構(gòu)的特(a) while5?(b) until5J圖2-17循環(huán)結(jié)構(gòu):;:汁1:只有一個(gè)入口。圖 2-142-17

2、 中的 a 點(diǎn)為入口。2:只有一個(gè)出口。圖 2-142-17 中的 b 點(diǎn)為出口。注意,一個(gè)判斷框有兩個(gè)出口,但一個(gè)選擇結(jié)構(gòu)只有一個(gè)出口。不能混淆。3:結(jié)構(gòu)內(nèi)的每一部分都有被執(zhí)行到的機(jī)會(huì)。也就是說,對(duì)每一個(gè)框來說,都應(yīng)當(dāng)有一條到出口的路徑通過它。圖 2-20 中就沒有一條從入口到出口的路徑通過 A 框。4:結(jié)構(gòu)內(nèi)不存在死循環(huán)(無終止的循環(huán)) 。圖 2-21 就是一個(gè)死循環(huán)。 需要說明的是基本結(jié)構(gòu)并不一定只限于以上3 中,只要有以上四種特點(diǎn)就可以。人們可以自己定義之。例 : 如下兩圖2.5 用傳統(tǒng)流程圖表示求解一下問題的算法。(1) 有兩個(gè)瓶子 A 和 B ,分別放醋和醬油,要求將他們互換。 #

3、includevoid main()int a;int b;int c;a=10;b=5;printf(%d,%dn,a,b);c=a;a=b;b=c;printf(%d,%dn,a,b);(2) 一次將 10 個(gè)數(shù)輸入,要求將將其中最大的數(shù)輸出。#includevoid main()int a10;int i;int max;printf(input 10 numbers.n);for(i=0;i10;i+)scanf(%d,&ai);printf(n);max=a0;for(i=1;i10;i+)if(maxai) max=ai;printf(the max is: %dn,max) ;(

4、3) 有 3 個(gè)數(shù) a b c,要求安大小順序把他們輸出。 #include void main()int a;int b;int c;int t;scanf(%d%d%d,&a,&b,&c); printf(n);printf(the first numbers:); printf(%d,%d,%dn,a,b,c);if(ab) t=a;a=b;b=t; if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(the changed numbers:); printf(%d,%d,%dn,a,b,c);(4) 求 1+2+3+ +100 。#includevoi

5、d main()int i;int sum=0; for(i=1;i=100;i+) sum=sum+i;printf(the sum is:%dn,sum);(5) 判斷一個(gè)數(shù) n 能否同時(shí)被 3 和 5 整除。#includevoid main()int i;printf(input in);scanf(%d,&i);if(i%3=0 & i%5=0)printf(%d is ok!n,i);elseprintf(%d can not!n,i);(6) 將 100200 之間的素?cái)?shù)輸出。#includevoid main()int i,j;for(i=100;i=200;i+)for(j=

6、2;ji;j+)if(i%j=0) break;if(i=j+1) printf(%dn,i);(7) 求兩個(gè)數(shù) m 和 n 的最大公約數(shù)。#includevoid main()int m,n;int t;int i;int z=1;scanf(%d%d,&m,&n);if(mn) t=m;m=n;n=t;for(i=2;i=m;i+)if(m%i=0 & n%i=0) z=i;printf(the answer is:%dn,z);2;有兩個(gè)相等(8) 求方程式 a x bx c 0 的根。分別考慮:有兩個(gè)不等的實(shí)根 的實(shí)根。#include#includevoid main()float

7、a,b,c;float dt;float m,n;float x1,x2;printf(input a,b,c!n);scanf(a=%f,b=%f,c=%f,&a,&b,&c);dt=sqrt(b*b-4*a*c);m=-b/(2*a);n=dt/(2*a);if(dt1e-6)x1=m+n;x2=m-n;printf(the equation has distinct real roots:x1=%f, x2=%fn,x1,x2); 再次說明一下由于我們考慮了實(shí)數(shù)在內(nèi), 而實(shí)數(shù)在計(jì)算和存儲(chǔ)時(shí)有細(xì)小誤差, 所以 dt=0 用 dt=1e-6 表示。即 10 的 -6 次方。2.5 用 N-S

8、 圖表示 2.4 題中各題的算法。2.6 用偽代碼表示 2.4 題中各題的算法。(1)輸出 19002000 年中是閏年的年份,符合下面?zhèn)z個(gè)條件之一的年份是閏年。 (一)能被 4 整除但不能被 100 整除 (二)能被 100 整除且能被 400 整除。#includevoid main()int i;for(i=1900;i=2000;i+)if(i%4=0 & i%100) printf(%dn,i);else if(i%400=0) printf(%dn,i);2.7 什么叫結(jié)構(gòu)化程序設(shè)計(jì)?他的主要內(nèi)容是什么? 答:結(jié)構(gòu)化程序設(shè)計(jì)是進(jìn)行以模塊功能和處理過程設(shè)計(jì)為主的詳細(xì)設(shè)計(jì)的基本原則。

9、它用基 本結(jié)構(gòu)(一般認(rèn)為是 3 種:順序、選擇和循環(huán)) 為基本思想設(shè)計(jì)的程序。 這種程序便于編寫、保證了程便于閱讀、 便于修改和維護(hù)。這就減少了程序出錯(cuò)的機(jī)會(huì),提高了程序的可靠性, 序的質(zhì)量。它的主要內(nèi)容為:把一個(gè)復(fù)雜問題的求解過程分階段進(jìn)行,每個(gè)階段處理的問題都控 制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。具體說:采用以下方法來保證得到結(jié)構(gòu)化的程序:( 1)自頂向下( 2)逐步細(xì)化( 3)模塊化設(shè)計(jì) (4)結(jié)構(gòu)化編碼。 拓展:結(jié)構(gòu)化程序的概 念首先是從以往編程過程中無限制地使用轉(zhuǎn)移語句而提出的。 轉(zhuǎn)移語句可以使程序的控制流 程強(qiáng)制性的轉(zhuǎn)向程序的任一處,在傳統(tǒng)流程圖中,用很隨意 的流程線來描述轉(zhuǎn)移功能。

10、如果一個(gè)程序中多處出現(xiàn)這種轉(zhuǎn)移情況, 將會(huì)導(dǎo)致程序流程無序可尋, 程序結(jié)構(gòu)雜亂無章, 這 樣的程序是令人難以理解和接受的,并且容易出錯(cuò)。2.8 用自頂向下、逐步細(xì)化的方法進(jìn)行以下算法的設(shè)計(jì):(1) 輸出 1900-2000 年中是閏年的年份, 符合下面兩個(gè)條件之一的年份是閏年。 能被4 整除但不能被 100 整除;能被 100 整除切能被 400 整除。 #include void main()int i;for(i=1900;i=2000;i+)if(i%4=0 & i%100) printf(%dn,i);else if(i%400=0) printf(%dn,i);2(2) 求 a x

11、bx c 0 的根。分別考慮2D=b 4ac大于 0、等于 0、小于 0這 3種情況。#include#includevoid main()float a,b,c;float dt;float m,n;float x1,x2;printf(input a,b,c!n); scanf(a=%f,b=%f,c=%f,&a,&b,&c);dt=b*b-4*a*c;if(fabs(dt)1e-6) x1=(-b+sqrt(dt)/(2*a);x2=(-b-sqrt(dt)/(2*a);printf(the equation has distinct real roots:x1=%f, x2=%fn,x1,x2); elsem=(-b)/(2*a);n=sqrt(-dt)/(2*a);printf(the equation has complex real roots:nx1=%f+%fin,m,n);printf(x2=%f-%fin,m,n);(3) 輸入 10 個(gè)數(shù)

溫馨提示

  • 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. 人人文庫(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)論