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

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

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

答:

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

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

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

例如:

1、自驾去新疆旅游

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

2、网上买一部手机

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

3、相亲

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

4、把大象放进冰箱

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

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

答:

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

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

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

解:

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

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

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

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

见图2.1和图2.2。

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

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

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

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

解:流程图见图 2.4。

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

解:流程图见图2.5。

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

解:流程图见图 2.6。

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

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

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

解:流程图见图 2.8。

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

解:流程图见图 2.9。

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

​ ①有两个不等的实根;

​ ②有两个相等的实根。

解:流程图见图 2.10。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

​ ①有两个不等的实根;

​ ②有两个相等的实根。

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

题目6:用伪代码表示第4题中各题的算法。

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

解:

c = a
a = b
b = c

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

解:

n= 1
input max
while n<10 doinput aif a>max then max= an=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 thenprint c,a,b
elseif c>b thenprint a,c,belseprint a,b,c end if
end if

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

解:

sum = 0
n= 1
while n≤100 dosum = 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 thenprint n "能被 3 和 5 整除"
elseprint n "不能同时被 3 和 5 整除
end if

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

解:

n= 100
while n≤200 do i=2 while i≤ √nif mod(n,i)=0 then i=n else i=i+1 end if end doif 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 dom= 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 thenif disc=0 thenxl,x2=-b/(2a)elsexl=(-b+√disc)/(2a)x2=(-b-√disc)/(2a)end if print x1,x2
elsep=-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)。

(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图。

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

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

《C语言程序设计》(谭浩强第五版) 第2章 算法——程序的灵魂相关推荐

  1. C语言程序设计谭浩强第五版复习梳理2

    第2章 算法--程序的灵魂 前言:前两章都是c语言基础知识,软考还有考研笔试可能会考,下一章开始学的才是真正的编程. 2.1程序=算法+数据结构 算法+数据结构=程序 数据结构: 对数据的描述.在程序 ...

  2. C程序设计谭浩强第五版课后答案 第三章习题答案

    C语言程序设计谭浩强第五版课后答案第三章 1.假如我国国民生产总值的年增长率为7%, 计算10年后我国国民生产总值与现在相比增长多少百分比.计算公式为p=(1+r)np = (1+r)^np=(1+r ...

  3. C程序设计(谭浩强第五版)总结

    C程序设计(谭浩强第五版)总结 本篇文章主要是总结谭浩强第五版C语言书上的重点和易漏点的知识点,其目的主要是给高校期末考试的同学们点参考.本文所参考的书籍是谭浩强的<C程序设计(第五版)> ...

  4. 《C语言程序设计》(谭浩强第五版) 第8章 善于利用指针 习题解析与答案

    你也可以上程序咖(https://meta.chengxuka.com),打开大学幕题板块,不但有答案,讲解,还可以在线答题. 本章习题均要求用指针方法处理. 题目1:输入3个整数,按由小到大的顺序输 ...

  5. 《C语言程序设计》(谭浩强第五版) 第6章 利用数组处理批量数据 习题解析与答案

    你也可以上程序咖(https://meta.chengxuka.com),打开大学幕题板块,不但有答案,讲解,还可以在线答题. 题目1:用筛选法求100 之内的素数. 解: 所谓"筛选法&q ...

  6. C语言程序设计(谭浩强第五版)——习题

    C语言程序设计(谭浩强第五版)--习题 第3章 最简单的C程序设计--顺序程序设计 第4章 选择结构程序设计 第5章 循环结构程序设计 第6章 利用数组处理批量数据 第3章 最简单的C程序设计--顺序 ...

  7. 《C语言程序设计》谭浩强 第五版 编程10题解答2

    <C语言程序设计>谭浩强 第五版 编程10题解答2 11.素数计算 编写程序计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔减.加之和,即第1个素数- ...

  8. 谭浩强c语言规范化的指数形式,C语言程序设计谭浩强第四期末复习重点.docx

    1. 1.问题分析2.设计算法3.编写程序4.对源程序进行编辑.编译和连接5.运行程序,分析结 6.编写程序文档 第一章程 序 设 计 和C 语 言 1.1.什么是计算机程序 程序:一组计算机能识别和 ...

  9. C程序设计-谭浩强 第三版-学习笔记 第2章 程序的灵魂 算法

    第 2 章 算法 --程序的灵魂 程序 = 算法 + 数据结构 (沃思,计算机科学家) 一个程序应该包括两方面: 对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构(data stru ...

最新文章

  1. 10 vm 添加串口_STM32的串口通信
  2. PMCAFF微课堂「已结束」| 测试兄弟CEO揭秘如何提高创初团队的产品质量
  3. Linux学习之十二-Linux文件属性
  4. c#和c++的opencv位图数据参数互换问题解决方法
  5. 服务器mysql显示链接次数太多,服务器mysql显示链接次数太多
  6. 【英语学习】【Daily English】U15 Culture L03 How will that help me to fit in
  7. float 精度_为什么float后面要加f
  8. 省选专练 【BZOJ4773】负环
  9. pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
  10. 云计算能给你带来什么?
  11. 【科研论文】找到中文论文的英文引用格式
  12. html 引入 icon 图标
  13. window的pagefile.sys和hiberfil.sys文件
  14. 由于应用universal link 校验不通过 ios应用升级SDK 更换Universal Links校验
  15. ecshop模板制作5-调整首页样式
  16. 网络安全法条例-黑客违法判刑标准国家安全法介绍和案例
  17. 很多人大一就开始学习C语言,你真的学到了吗?
  18. HTML5基础资源分享
  19. android增量编译,GitHub - brok1n/androidBsdiffUpdate: Android增量更新项目源代码。带C源程序以及ndk编译好的so包。可以直接导出使用。...
  20. 华钜同创:亚马逊滞销产品快速清仓的方法!

热门文章

  1. 图像处理之特征提取(一)之HOG特征简单梳理
  2. 2018 ICPC 焦作区域赛 Resistors in Parallel(找规律+大数)
  3. Opencv目标跟踪—CamShift算法
  4. 关于html页面访问Controller报404 not fount
  5. 36.Nginx 基础入门篇
  6. spring配置AOP
  7. 字节跳动最常问的前端面试题:Node.js 基础
  8. matlab 总谐波失真,分析谐波失真 - MATLAB Simulink Example - MathWorks 中国
  9. Coursera 学习记录:细菌分组(通过冒泡排序实现两组有差异的分类)
  10. 在ROIC的框架下精读巴菲特的新作