当前位置 博文首页 > 文章内容

    C语言程序设计第五版谭浩强课后答案(第二章答案)

    作者:shunshunshun18 栏目:未分类 时间:2021-04-02 14:42:21

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



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

    算法:简而言之就是求解问题的步骤,对特定问题求解步骤的一种描述。

    比如生活中的例子:

    考大学

    首先填报志愿表、交报名费、拿到准考证、按时参加考试、收到录取通知书、按照日期到指定学校报到。

    去北京听演唱会

    首先在网上购票、然后按时坐车到北京,坐车到演唱会会场。

    把大象放进冰箱

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

    2. 什么叫结构化的算法?为什么要提倡结构化的算法?

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

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

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

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

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

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

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

    因此给出以下复习结构:while型和until型循环复合以及多选择结构

    C语言程序设计第五版谭浩强第三题答案

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

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

    解析:

    用两个瓶子显然很难实现,可以借助一个空瓶子C作为中转,先将A中醋导入C中,然后将B中的酱油导入A中,最后将C中的醋导入B中即可实现交换。

    C语言程序设计第五版谭浩强课后答案第三题答案

    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,结束

    C语言程序设计第五版谭浩强课后答案第3题答案

    4.求1 + 2 + 3 + … + 100。

    解析:

    给定N为1,sum为0,如果N 小于等于100时,进行sum += N,直到N超过100,循环操作完成后sum即为从1加到100的结果。

    C语言程序设计第五版谭浩强课后答案第4题答案

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

    解析:

    i:输入数据n

    ii:如果n能被3整数,进行iii,否则输出n不能被3和5整数

    iii:如果n能被5整数,输出n能被3和5整数,否则n不能被3和5整数

    C语言程序设计第五版谭浩强课后答案第5题答案

    6.将100~200之间的素数输出

    素数:即数学中的质数,因子只有1和其本身的数字称为质数。

    对100和200之间的每个数进行一下操作:

    该数能否被2~该数之间的所有数整除,是则是素数输出,否则取下一个数字。

    将100~200之间的素数输出

    7.求两个数m和n的最大公约数

    解析:辗转相除法

    a. 如果m大于n,交换m和n

    b. 循环进行一下操作:

    ​ n是否为0? 是则最大公约数为m,输出m结束。

    ​ 否则:用m%n结果给r,将n的值给m,将r的值给n

    求两个数m和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则方程没有实根。

    C语言程序设计第五版谭浩强课后答案

    5. 用N-S图表示第4题中各题的算法

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

    C语言程序设计第五版谭浩强第五题课后答案

    2.依次将10个数输入,要求输出其中最大的数。

    谭浩强课后习题答案

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

    C语言程序设计第五版谭浩强习题答案

    4.求1 + 2 + 3 + … + 100。

    求1 + 2 + 3 + ... + 100

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

    C语言程序设计第五版课后习题答案

    6.求两个数m和n的最大公约数

    C语言程序设计第五版谭浩强答案 第六题

    7.求方程 a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0的根。分别考虑:

    • 有两个不相等的实根;
    • 有两个相等的实根;

    C语言程序设计第五版谭浩强答案

    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