C語言程序設計第五版譚浩強課後答案(第二章答案)
1. 什麼是算法?試從日常生活中找3個例子,描述它們的算法
算法:簡而言之就是求解問題的步驟,對特定問題求解步驟的一種描述。
比如生活中的例子:
考大學
首先填報志願表、交報名費、拿到準考證、按時參加考試、收到錄取通知書、按照日期到指定學校報到。
去北京聽演唱會
首先在網上購票、然後按時坐車到北京,坐車到演唱會會場。
把大象放進冰箱
先打開冰箱門,然後將大象放進冰箱,關冰箱。
2. 什麼叫結構化的算法?為什麼要提倡結構化的算法?
結構化算法:由一些順序、選擇、循環等基本結構按照順序組成,流程的轉移隻存在於一個基本的范圍之內。
結構化算法便於編寫,可讀性高,修改和維護起來簡單,可以減少程序出錯的機會,提高瞭程序的可靠性,保證瞭程序的質量,因此提倡結構化的算法。
3. 試述3種基本結構的特點,請另外設計兩種基本結構(要符合基類結構的特點)。
結構化程序設計方法主要由以下三種基本結構組成:
- 順序結構:順序結構是一種線性、有序的結構,它依次執行各語句模塊
- 選擇結構:選擇結構是根據條件成立與否選擇程序執行的通路。
- 循環結構:循環結構是重復執行一個或幾個模塊,直到滿足某一條件位置
重新設計基本結構要滿足以下幾點:
- 隻有一個入口
- 隻有一個出口
- 結構內的每一部分都有機會執行到
- 結構內不存在死循環
因此給出以下復習結構:while型和until型循環復合以及多選擇結構
4. 用傳統流程圖表示求解以下問題的算法。
1.有兩個瓶子A和B,分別盛放醋和醬油,要求將他們互換(即A瓶原來盛醋,現在盛醬油,B瓶則相反)。
解析:
用兩個瓶子顯然很難實現,可以借助一個空瓶子C作為中轉,先將A中醋導入C中,然後將B中的醬油導入A中,最後將C中的醋導入B中即可實現交換。
2.依次將10個數輸入,要求輸出其中最大的數。
解析:
先輸入10個整數,將第一個整數給max,然後依次取剩餘整數與max進行比較,如果某個整數大於max,將該整數交給max,直到所有剩餘整數全部比較完,max中保存的即為最大整數,將max值輸出。
3.有3個數a,b,c, 要求按大小順序把他們輸出。
解析:
i:先用a和b比較,如果a大於b,將a與b內容交換,否則進行ii
ii:用c和a比較,如果c大於a,將a和c交換,否則進行iv
iii:用c和b比較,如果c大於b,將c和b進行交換,否則進行iv
iv:輸出a、b、c,結束
4.求1 + 2 + 3 + … + 100。
解析:
給定N為1,sum為0,如果N 小於等於100時,進行sum += N,直到N超過100,循環操作完成後sum即為從1加到100的結果。
5.判斷一個數n能否同時被3和5整除。
解析:
i:輸入數據n
ii:如果n能被3整數,進行iii,否則輸出n不能被3和5整數
iii:如果n能被5整數,輸出n能被3和5整數,否則n不能被3和5整數
6.將100~200之間的素數輸出
素數:即數學中的質數,因子隻有1和其本身的數字稱為質數。
對100和200之間的每個數進行一下操作:
該數能否被2~該數之間的所有數整除,是則是素數輸出,否則取下一個數字。
7.求兩個數m和n的最大公約數
解析:輾轉相除法
a. 如果m大於n,交換m和n
b. 循環進行一下操作:
n是否為0? 是則最大公約數為m,輸出m結束。
否則:用m%n結果給r,將n的值給m,將r的值給n
8.求方程 a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0的根。分別考慮:
有兩個不相等的實根;有兩個相等的實根;
解析:
如果 b 2 − 4 a c > 0 b^2 – 4ac > 0 b2−4ac>0則方程有兩個不相等的實根: x = − b ± b 2 − 4 a c 2 a x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} x=2a−b±b2−4ac
如果 b 2 − 4 a c = 0 b^2 – 4ac = 0 b2−4ac=0則方程有一個實根: x = − b 2 a x=\frac{-b}{2a} x=2a−b
如果 b 2 − 4 a c < 0 b^2 – 4ac < 0 b2−4ac<0則方程沒有實根。
5. 用N-S圖表示第4題中各題的算法
1.有兩個瓶子A和B,分別盛放醋和醬油,要求將他們互換(即A瓶原來盛醋,現在盛醬油,B瓶則相反)。
2.依次將10個數輸入,要求輸出其中最大的數。
3.有3個數a,b,c, 要求按大小順序把他們輸出。
4.求1 + 2 + 3 + … + 100。
5.判斷一個數n能否同時被3和5整除。
6.求兩個數m和n的最大公約數
7.求方程 a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0的根。分別考慮:
- 有兩個不相等的實根;
- 有兩個相等的實根;
6. 用偽代碼表示第4題中各題的算法
有兩個瓶子A和B,分別盛放醋和醬油,要求將他們互換(即A瓶原來盛醋,現在盛醬油,B瓶則相反)。
begin 醋 => A 醬油 => B A => C B => A C => B end
依次將10個數輸入,要求輸出其中最大的數。
begin 1 => i 0 => max while i < 10 { 輸入一個整數data if data > max { data => max } } print max end
有3個數a,b,c, 要求按大小順序把他們輸出。
begin input a input b input c if a > b { a => t b => a t => b } if c > a { c => t a => c t => a } if c > b { c => t b => c t => b } print a print b print c end
求1 + 2 + 3 + … + 100。
begin 1 => i 0 => sum while i <= 100 { sum + i => sum i + 1 => i } print sum end
判斷一個數n能否同時被3和5整除。
begin input n if n % 3 == 0 { if n % 5 == 0 { print n能被3和5整除 } else { print n不能被3和5整除 } } else { print n不能被3和5整除 } end
求兩個數m和n的最大公約數
begin input m input n if m > n { m => t n => m t => n } while n != 0 { m % n => r m => n r => n } print m end
求方程 a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0的根。分別考慮:
有兩個不相等的實根;
有兩個相等的實根;
begin input a input b input c b*b - 4*a*c => p if p < 0 { print 方程沒有實根 } if p == 0 { print 方程有一個實根 -b/2a } if p > 0 { print 方程有兩個實根: print x1 = {-b + sqrt(b^2 - 4ac)}/2a print x1 = {-b - sqrt(b^2 - 4ac)}/2a } end
7. 什麼叫結構化程序設計?它的主要內容是什麼?
結構化程序設計(structured programming,簡稱SP)是進行以模塊功能和處理過程設計為主的詳細設計的基本原則。其概念最早由E.W.Dijikstra在1965年提出的。結構化程序設計思想確實使程序執行效率提高 ,是軟件發展的一個重要的裡程碑,它的主要觀點是采用自頂向下、逐步求精的程序設計方法;各個模塊通過“順序、選擇、循環”的控制結構進行連接,並且隻有一個入口、一個出口 。
8. 用自頂向下、逐步細化的方法進行以下算法的設計:
輸出1900—2000年中是軟黏的年份,符合下面兩個條件之一的年份是閏年:
- 能被4整除但不能被100整除
- 能被100整除且能被400整除。
算法大體流程
1. 循環取1900到2000中的每一個年份
2. 對於每一個年份判斷其是否是閏年
3. 是閏年則輸出判斷一年是否是閏年:
1. 如果該年份內被4整除但是不能被100整除是閏年,否則不是閏年
2. 如果年份能被400整除則是閏年,否則不是閏年
求 a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0的根。分別考慮 d = b 2 − 4 a c d = b^2 – 4ac d=b2−4ac大於0、等於0和小於0這三種情況。
1. 獲取a b c的值
2. 計算b^2 – 4ac的結果並給p
3. 如果p < 0, 則方程沒有實根
4. 如果p == 0,則方程有一個實根-b/2a
5. 如果p > 0, 則方程有兩個實根 x1 = {-b + sqrt(b^2 – 4ac)}/2a x2 = {-b – sqrt(b^2 – 4ac)}/2a
輸入10個數,輸出其中最大的一個數。
1. 給一個max保存最大值
2. 分別輸入10個數,並對用每個數與max進行比較
如果該數大於max,則將該數給max
3. 輸出max
到此這篇關於C程序設計第五版譚浩強課後答案(第二章答案)的文章就介紹到這瞭,更多相關C程序課後答案內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found