《C語言程序設(shè)計》(譚浩強(qiáng)第五版) 第2章 算法——程序的靈魂 習(xí)題解析與答案

《C語言程序設(shè)計》(譚浩強(qiáng)第五版) 第2章 算法——程序的靈魂 習(xí)題解析與答案

你也可以上程序咖(https://meta.chengxuka.com)职车,打開大學(xué)幕題板塊瘫俊,不但有答案鹊杖,講解,還可以在線答題扛芽。

WX20220412-135428@2x.png

題目1:什么是算法骂蓖?試從日常生活中找3個例子,描述它們的算法川尖。

答:

算法:算法是計算機(jī)處理信息的本質(zhì)登下,因為計算機(jī)程序本質(zhì)上是一個算法來告訴計算機(jī)確切的步驟來執(zhí)行一個指定的任務(wù)。一般地叮喳,當(dāng)算法在處理信息時被芳,會從輸入設(shè)備或數(shù)據(jù)的存儲地址讀取數(shù)據(jù),把結(jié)果寫入輸出設(shè)備或某個存儲地址供以后再調(diào)用馍悟。

算法是獨立存在的一種解決問題的方法和思想畔濒。

對于算法而言,實現(xiàn)的語言并不重要赋朦,重要的是思想篓冲。

例如:

1、自駕去新疆旅游

準(zhǔn)備好車宠哄,然后準(zhǔn)備旅游路線等壹将,開車出發(fā),一路游山玩水毛嫉。

2诽俯、網(wǎng)上買一部手機(jī)

首先選好網(wǎng)購平臺(某寶,某東承粤,某貓等)暴区,然后選擇想要的品牌和型號,下單辛臊,等待到貨仙粱。

3、相親

首先有七大姑八大姨等(如果沒有可以選擇一些交友網(wǎng)站或其他媒婆)彻舰,然后獲取對方的聯(lián)系方式和基本信息伐割,出發(fā)到達(dá)目的地,相見刃唤,滿意或不滿意隔心,決定了是否可以再約。

4尚胞、把大象放進(jìn)冰箱

先打開冰箱門硬霍,然后將大象放進(jìn)冰箱,關(guān)冰箱笼裳。

題目2:什么叫結(jié)構(gòu)化的算法唯卖?為什么要提倡結(jié)構(gòu)化的算法粱玲?

答:

結(jié)構(gòu)化算法:由一些順序、選擇拜轨、循環(huán)等基本結(jié)構(gòu)按照順序組成密幔,流程的轉(zhuǎn)移只存在于一個基本的范圍之內(nèi)。

結(jié)構(gòu)化算法便于編寫撩轰,可讀性高,修改和維護(hù)起來簡單昧廷,可以減少程序出錯的機(jī)會堪嫂,提高了程序的可靠性,保證了程序的質(zhì)量木柬,因此提倡結(jié)構(gòu)化的算法皆串。

題目3:試述3種基本結(jié)構(gòu)的特點,請另外設(shè)計兩種基本結(jié)構(gòu)(要符合基本結(jié)構(gòu)的特點)眉枕。

解:

結(jié)構(gòu)化程序設(shè)計方法主要由以下三種基本結(jié)構(gòu)組成:

順序結(jié)構(gòu):順序結(jié)構(gòu)是一種線性恶复、有序的結(jié)構(gòu),它依次執(zhí)行各語句模塊
選擇結(jié)構(gòu):選擇結(jié)構(gòu)是根據(jù)條件成立與否選擇程序執(zhí)行的通路速挑。
循環(huán)結(jié)構(gòu):循環(huán)結(jié)構(gòu)是重復(fù)執(zhí)行一個或幾個模塊谤牡,直到滿足某一條件位置

重新設(shè)計基本結(jié)構(gòu)要滿足以下幾點:

只有一個入口
只有一個出口
結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會執(zhí)行到
結(jié)構(gòu)內(nèi)不存在死循環(huán)

見圖2.1和圖2.2。

WX20220331-155852@2x.png
WX20220331-155906@2x.png

題目4:用傳統(tǒng)流程圖表示求解以下問題的算法姥宝。

(1)有兩個瓶子A 和 B翅萤,分別盛放醋和醬油,要求將它們互換(即 A 瓶原來盛醋腊满,現(xiàn)改盛醬油套么,B 瓶則相反)。

解:顯然碳蛋,如果只有兩個瓶子胚泌,肯定不能完成此任務(wù),必須有一個空瓶C作為過渡肃弟,其步驟見圖 2.3玷室。

WX20220331-160017@2x.png

(2)依次將10個數(shù)輸人,要求輸出其中最大的數(shù)愕乎。

解:流程圖見圖 2.4阵苇。

WX20220331-160325@2x.png

(3)有3個數(shù)a,b感论,c绅项,要求按大小順序把它們輸出。

解:流程圖見圖2.5比肄。

WX20220331-160253@2x.png

(4)求1+2+3+……+ 100快耿。

解:流程圖見圖 2.6囊陡。

WX20220331-160302@2x.png

(5)判斷一個數(shù)n能否同時被3和5整除。

解:流程圖見圖 2.7(a)或圖 2.7(b)掀亥。

WX20220331-160435@2x.png

(6)將100~200之間的素數(shù)輸出撞反。

解:流程圖見圖 2.8。

WX20220331-160513@2x.png

(7)求兩個數(shù)m和n的最大公約數(shù)搪花。

解:流程圖見圖 2.9遏片。

WX20220331-160539@2x.png

(8)求方程式ax2+ bx+c=0的根。分別考慮:

    ①有兩個不等的實根撮竿;

    ②有兩個相等的實根吮便。

解:流程圖見圖 2.10。

WX20220331-160617@2x.png

題目5:用N-S圖表示第4題中各題的算法幢踏。

(1)有兩個瓶子A 和 B髓需,分別盛放醋和醬油,要求將它們互換(即 A 瓶原來盛醋房蝉,現(xiàn)改盛醬油僚匆,B 瓶則相反)。

解:N-S流程圖見圖 2.11搭幻。

WX20220331-160642@2x.png

(2)依次將10個數(shù)輸人咧擂,要求輸出其中最大的數(shù)。

解:N-S流程圖見圖 2.12檀蹋。

WX20220331-160653@2x.png

(3)有3個數(shù)a屋确,b,c续扔,要求按大小順序把它們輸出攻臀。

解:N-S流程圖見圖 2.13。

WX20220331-160704@2x.png

(4)求1+2+3+……+ 100纱昧。

解:N-S流程圖見圖 2.14刨啸。

WX20220331-160712@2x.png

(5)判斷一個數(shù)n能否同時被3和5整除。

解:N-S流程圖見圖 2.15识脆。

WX20220331-161358@2x.png

(6)將100~200之間的素數(shù)輸出设联。

解:N-S流程圖見圖 2.16。

WX20220331-161427@2x.png

(7)求兩個數(shù)m和n的最大公約數(shù)灼捂。

解:N-S流程圖見圖 2.17离例。

WX20220331-161449@2x.png

(8)求方程式ax2+ bx+c=0的根。分別考慮:

    ①有兩個不等的實根悉稠;

    ②有兩個相等的實根宫蛆。

解:N-S流程圖見圖 2.18。

WX20220331-161510@2x.png

題目6:用偽代碼表示第4題中各題的算法的猛。

(1)有兩個瓶子A 和 B耀盗,分別盛放醋和醬油想虎,要求將它們互換(即 A 瓶原來盛醋秉溉,現(xiàn)改盛醬油姻蚓,B 瓶則相反)。

解:

c = a
a = b
b = c

(2)依次將10個數(shù)輸人井氢,要求輸出其中最大的數(shù)忿薇。

解:

n= 1
input max 
while n<10 do
    input a
    if a>max then max= a
    n=n+1
end do
print max

(3)有3個數(shù)a裙椭,b,c署浩,要求按大小順序把它們輸出骇陈。

解:

input a,b,c
if a<b then swap a,b        (swap a,b表示a和b互換)
if a<c then
    print c,a,b
else
    if c>b then
        print a,c,b
    else
        print a,b,c 
    end if
end if

(4)求1+2+3+……+ 100。

解:

sum = 0
n= 1
while n≤100 do
    sum = sumt+n 
    n=n+1
end do
print sum

(5)判斷一個數(shù)n能否同時被3和5整除瑰抵。

解:

input n
flag=0
if mod(n,3)≠ 0 then flag=- 1
if mod(n,5)≠ 0 then flag= 1
if flag=0 then
    print n "能被 3 和 5 整除"
else
    print n "不能同時被 3 和 5 整除
end if

(6)將100~200之間的素數(shù)輸出。

解:

n= 100 
while n≤200 do 
  i=2 
  while i≤ √n
    if mod(n,i)=0 then 
      i=n 
    else 
      i=i+1 
    end if 
   end do
   if i<√n then print n 
   n=m+1 
end do

(7)求兩個數(shù)m和n的最大公約數(shù)器联。

解:

input m,n
if m<n then swap m,n 
t= mod(m,n)
while r≠=0 do
  m= n 
  n=r 
  r= mod(m,n)
end do 
print n

(8)求方程式ax2+ bx+c=0的根二汛。分別考慮:

    ①有兩個不等的實根;

    ②有兩個相等的實根拨拓。

解:

int a,b,c 
disc= b2-4ac 
if disc≥0 then
  if disc=0 then
    xl,x2=-b/(2a)
  else
    xl=(-b+√disc)/(2a)
    x2=(-b-√disc)/(2a)
    end if 
    print x1,x2 
else
  p=-b/(2a)
  q= √(dis/(2a)
  print p+q,"+",p-q,"i"
end if

題目7:什么叫結(jié)構(gòu)化程序設(shè)計肴颊?它的主要內(nèi)容是什么?

答:

結(jié)構(gòu)化程序設(shè)計(structured programming渣磷,簡稱SP)是進(jìn)行以模塊功能和處理過程設(shè)計為主的詳細(xì)設(shè)計的基本原則婿着。其概念最早由E.W.Dijikstra在1965年提出的。結(jié)構(gòu)化程序設(shè)計思想確實使程序執(zhí)行效率提高 醋界,是軟件發(fā)展的一個重要的里程碑竟宋,它的主要觀點是采用自頂向下、逐步求精的程序設(shè)計方法形纺;各個模塊通過“順序丘侠、選擇、循環(huán)”的控制結(jié)構(gòu)進(jìn)行連接逐样,并且只有一個入口蜗字、一個出口 。

題目8:用自頂向下脂新、逐步細(xì)化的方法進(jìn)行以下算法的設(shè)計:

(1)輸出1900- 2000 年中是閏年的年份挪捕,符合下面兩個條件之一的年 份是閏年:

    ①能被4整除但不能被100整除;

    ②能被100整除且能被400整除争便。

解:先畫出圖 2.19(a)级零,對它細(xì)化得圖 2.19(b);對圖 2.19(b)中的 S1.1細(xì)化得圖2.19(c)。

WX20220331-163815@2x.png

(2)求ax2+bx+c=0的根滞乙。分別考慮d=b°-4ac大于0妄讯、等于0和小于0這3種情況孩锡。

解:先畫出圖2.20(a),對其中的 S3細(xì)化為圖2.20(b)亥贸,對圖2.20(b)中的 S3.1細(xì)化為圖2.20(c)躬窜,對圖2.20(c)中的S3.1.1細(xì)化為圖2.20(d),對圖2.20(c)中的 S3.1.2細(xì)化為圖 2.20(e)炕置,再對圖 2.20(b)中的 S3.2細(xì)化為圖 2.20(f)荣挨。請讀者將它們合成一個總的N-S圖。

WX20220331-163846@2x.png

(3)輸人10個數(shù)朴摊,輸出其中最大的一個數(shù)默垄。

解:先初步畫出圖 2.21(a)∩醺伲考慮到還沒有學(xué)習(xí)數(shù)組的知識口锭,因而不能做到將 10個數(shù)全部輸入給數(shù)組中各個元素,然后再從中找最大者介杆。由于不采用數(shù)組這種數(shù)據(jù)結(jié)構(gòu)鹃操,算法也應(yīng)與采用數(shù)組時有所不同。現(xiàn)在只用普通變量春哨,逐個讀入數(shù)據(jù)荆隘,將當(dāng)時各數(shù)中的最大者保留下來存放在 max中,以便再與后面讀入的數(shù)比較赴背。將圖 2.21(a)細(xì)化為圖 2.21(b)椰拒,再細(xì)化為圖2.21(c)。

WX20220331-164017@2x.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凰荚,一起剝皮案震驚了整個濱河市燃观,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌便瑟,老刑警劉巖仪壮,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胳徽,居然都是意外死亡积锅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門养盗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缚陷,“玉大人,你說我怎么就攤上這事往核◇镆” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長虎锚。 經(jīng)常有香客問我硫痰,道長,這世上最難降的妖魔是什么窜护? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任效斑,我火速辦了婚禮,結(jié)果婚禮上柱徙,老公的妹妹穿的比我還像新娘缓屠。我一直安慰自己,他們只是感情好护侮,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布敌完。 她就那樣靜靜地躺著,像睡著了一般羊初。 火紅的嫁衣襯著肌膚如雪滨溉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天长赞,我揣著相機(jī)與錄音晦攒,去河邊找鬼。 笑死涧卵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腹尖。 我是一名探鬼主播柳恐,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼热幔!你這毒婦竟也來了乐设?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绎巨,失蹤者是張志新(化名)和其女友劉穎近尚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體场勤,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡戈锻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了和媳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片格遭。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖留瞳,靈堂內(nèi)的尸體忽然破棺而出拒迅,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布璧微,位于F島的核電站作箍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏前硫。R本人自食惡果不足惜胞得,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望开瞭。 院中可真熱鬧懒震,春花似錦、人聲如沸嗤详。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葱色。三九已至递宅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間苍狰,已是汗流浹背办龄。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留淋昭,地道東北人俐填。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像翔忽,于是被迫代替她去往敵國和親英融。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容