《C程序设计》谭浩强(第五版)课后习题答案(第二章)

成功的背后是不懈的努力。

1. 什么是算法?试从日常生活中找3个例子,描述它们的算法 算法:简而言之就是求解问题的步骤,对特定问题求解步骤的一种描述。 比如生活中的例子:

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

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

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

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

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

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

程序:就是一组能识别和执行的指令,每一条指令使计算机执行特定的操作程序设计:是指从确定任务到得到结果、写出文档的全过程

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

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

(1)顺序结构:顺序结构是一种线性、有序的结构,它依次执行各语句模块

(2)选择结构:选择结构是根据条件成立与否选择程序执行的通路。

(3)循环结构:循环结构是重复执行一个或几个模块,直到满足某一条件位置

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

  (1)只有一个入口

  (2)只有一个出口

(3)结构内的每一部分都有机会执行到

(4)结构内不存在死循环

因此给出以下复习结构: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

★ ”每一次跌倒都是为了更好地站起,每一次失败都是通往成功的必经之路。成长,就是在不断试错与修正中,逐渐找到属于自己的方向。

★ ”每一次跌倒都是为了更好地站起,每一次失败都是通往成功的必经之路。成长,就是在不断试错与修正中,逐渐找到属于自己的方向。
  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值