《C语言程序设计》(谭浩强第五版) 第2章 算法——程序的灵魂 习题解析与答案

《C语言程序设计》(谭浩强第五版) 第2章 算法——程序的灵魂 习题解析与答案

你也可以上程序咖(https://meta.chengxuka.com),打开大学幕题板块,不但有答案,讲解,还可以在线答题。

WX20220412-135428@2x.png

题目1:什么是算法?试从日常生活中找3个例子,描述它们的算法。

答:

算法:算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。

算法是独立存在的一种解决问题的方法和思想。

对于算法而言,实现的语言并不重要,重要的是思想。

例如:

1、自驾去新疆旅游

准备好车,然后准备旅游路线等,开车出发,一路游山玩水。

2、网上买一部手机

首先选好网购平台(某宝,某东,某猫等),然后选择想要的品牌和型号,下单,等待到货。

3、相亲

首先有七大姑八大姨等(如果没有可以选择一些交友网站或其他媒婆),然后获取对方的联系方式和基本信息,出发到达目的地,相见,满意或不满意,决定了是否可以再约。

4、把大象放进冰箱

先打开冰箱门,然后将大象放进冰箱,关冰箱。

题目2:什么叫结构化的算法?为什么要提倡结构化的算法?

答:

结构化算法:由一些顺序、选择、循环等基本结构按照顺序组成,流程的转移只存在于一个基本的范围之内。

结构化算法便于编写,可读性高,修改和维护起来简单,可以减少程序出错的机会,提高了程序的可靠性,保证了程序的质量,因此提倡结构化的算法。

题目3:试述3种基本结构的特点,请另外设计两种基本结构(要符合基本结构的特点)。

解:

结构化程序设计方法主要由以下三种基本结构组成:

顺序结构:顺序结构是一种线性、有序的结构,它依次执行各语句模块
选择结构:选择结构是根据条件成立与否选择程序执行的通路。
循环结构:循环结构是重复执行一个或几个模块,直到满足某一条件位置

重新设计基本结构要满足以下几点:

只有一个入口
只有一个出口
结构内的每一部分都有机会执行到
结构内不存在死循环

见图2.1和图2.2。

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

题目4:用传统流程图表示求解以下问题的算法。

(1)有两个瓶子A 和 B,分别盛放醋和酱油,要求将它们互换(即 A 瓶原来盛醋,现改盛酱油,B 瓶则相反)。

解:显然,如果只有两个瓶子,肯定不能完成此任务,必须有一个空瓶C作为过渡,其步骤见图 2.3。

WX20220331-160017@2x.png

(2)依次将10个数输人,要求输出其中最大的数。

解:流程图见图 2.4。

WX20220331-160325@2x.png

(3)有3个数a,b,c,要求按大小顺序把它们输出。

解:流程图见图2.5。

WX20220331-160253@2x.png

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

解:流程图见图 2.6。

WX20220331-160302@2x.png

(5)判断一个数n能否同时被3和5整除。

解:流程图见图 2.7(a)或图 2.7(b)。

WX20220331-160435@2x.png

(6)将100~200之间的素数输出。

解:流程图见图 2.8。

WX20220331-160513@2x.png

(7)求两个数m和n的最大公约数。

解:流程图见图 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 瓶原来盛醋,现改盛酱油,B 瓶则相反)。

解:N-S流程图见图 2.11。

WX20220331-160642@2x.png

(2)依次将10个数输人,要求输出其中最大的数。

解:N-S流程图见图 2.12。

WX20220331-160653@2x.png

(3)有3个数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)判断一个数n能否同时被3和5整除。

解:N-S流程图见图 2.15。

WX20220331-161358@2x.png

(6)将100~200之间的素数输出。

解:N-S流程图见图 2.16。

WX20220331-161427@2x.png

(7)求两个数m和n的最大公约数。

解: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 瓶原来盛醋,现改盛酱油,B 瓶则相反)。

解:

c = a
a = b
b = c

(2)依次将10个数输人,要求输出其中最大的数。

解:

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个数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)判断一个数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之间的素数输出。

解:

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)求两个数m和n的最大公约数。

解:

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:什么叫结构化程序设计?它的主要内容是什么?

答:

结构化程序设计(structured programming,简称SP)是进行以模块功能和处理过程设计为主的详细设计的基本原则。其概念最早由E.W.Dijikstra在1965年提出的。结构化程序设计思想确实使程序执行效率提高 ,是软件发展的一个重要的里程碑,它的主要观点是采用自顶向下、逐步求精的程序设计方法;各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口、一个出口 。

题目8:用自顶向下、逐步细化的方法进行以下算法的设计:

(1)输出1900- 2000 年中是闰年的年份,符合下面两个条件之一的年 份是闰年:

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

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

解:先画出图 2.19(a),对它细化得图 2.19(b);对图 2.19(b)中的 S1.1细化得图2.19(c)。

WX20220331-163815@2x.png

(2)求ax2+bx+c=0的根。分别考虑d=b°-4ac大于0、等于0和小于0这3种情况。

解:先画出图2.20(a),对其中的 S3细化为图2.20(b),对图2.20(b)中的 S3.1细化为图2.20(c),对图2.20(c)中的S3.1.1细化为图2.20(d),对图2.20(c)中的 S3.1.2细化为图 2.20(e),再对图 2.20(b)中的 S3.2细化为图 2.20(f)。请读者将它们合成一个总的N-S图。

WX20220331-163846@2x.png

(3)输人10个数,输出其中最大的一个数。

解:先初步画出图 2.21(a)。考虑到还没有学习数组的知识,因而不能做到将 10个数全部输入给数组中各个元素,然后再从中找最大者。由于不采用数组这种数据结构,算法也应与采用数组时有所不同。现在只用普通变量,逐个读入数据,将当时各数中的最大者保留下来存放在 max中,以便再与后面读入的数比较。将图 2.21(a)细化为图 2.21(b),再细化为图2.21(c)。

WX20220331-164017@2x.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容