IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 《C语言程序设计》(谭浩强第五版) 第2章 算法——程序的灵魂 -> 正文阅读

[数据结构与算法]《C语言程序设计》(谭浩强第五版) 第2章 算法——程序的灵魂

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

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

WX20220412-135428@2x

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

答:

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

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

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

例如:

1、自驾去新疆旅游

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

2、网上买一部手机

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

3、相亲

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

4、把大象放进冰箱

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

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

答:

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

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

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

解:

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

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

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

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

见图2.1和图2.2。

WX20220331-155852@2x

WX20220331-155906@2x

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

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

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

WX20220331-160017@2x

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

解:流程图见图 2.4。

WX20220331-160325@2x

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

解:流程图见图2.5。

WX20220331-160253@2x

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

解:流程图见图 2.6。

WX20220331-160302@2x

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

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

WX20220331-160435@2x

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

解:流程图见图 2.8。

WX20220331-160513@2x

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

解:流程图见图 2.9。

WX20220331-160539@2x

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

? ①有两个不等的实根;

? ②有两个相等的实根。

解:流程图见图 2.10。

WX20220331-160617@2x

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

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

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

WX20220331-160642@2x

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

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

WX20220331-160653@2x

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

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

WX20220331-160704@2x

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

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

WX20220331-160712@2x

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

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

WX20220331-161358@2x

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

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

WX20220331-161427@2x

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

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

WX20220331-161449@2x

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

? ①有两个不等的实根;

? ②有两个相等的实根。

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

WX20220331-161510@2x

题目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 "不能同时被 35 整除
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

(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

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

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

WX20220331-164017@2x

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:24:47  更:2022-04-15 00:30:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:29:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码