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

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

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

比如生活中的例子:

考大学

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

去北京听演唱会

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

把大象放进冰箱

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

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

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

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

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

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

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

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

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

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

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则方程没有实根。

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

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

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

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

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

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

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

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

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

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

到此这篇关于C程序设计第五版谭浩强课后答案(第二章答案)的文章就介绍到这了,更多相关C程序课后答案内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

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

    1.假如我国国民生产总值的年增长率为7%, 计算10年后我国国民生产总值与现在相比增长多少百分比.计算公式为 p = ( 1 + r ) n p = (1+r)^n p=(1+r)n ,其中r为年增长率,n为年数,p为与现在相比的倍数. 题目解析: 此题的关键主要是利用数学库math中pow函数进行计算,若不熟悉可以查阅帮助文档,查看pow函数的用法. 代码示例: #include<stdio.h> #include <math.h> int main() { float p, r

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

    1. 什么是算法?试从日常生活中找3个例子,描述它们的算法 算法:简而言之就是求解问题的步骤,对特定问题求解步骤的一种描述. 比如生活中的例子: 考大学 首先填报志愿表.交报名费.拿到准考证.按时参加考试.收到录取通知书.按照日期到指定学校报到. 去北京听演唱会 首先在网上购票.然后按时坐车到北京,坐车到演唱会会场. 把大象放进冰箱 先打开冰箱门,然后将大象放进冰箱,关冰箱. 2. 什么叫结构化的算法?为什么要提倡结构化的算法? 结构化算法:由一些顺序.选择.循环等基本结构按照顺序组成,流程的转

  • JavaScript高级程序设计(第三版)学习笔记6、7章

    第6章,面向对象的程序设计 对象: 1.数据属性 configurable,表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true enumerbale,表示能否通过for-in访问属性,默认true ƒwritable,表示能否修改属性值,默认true „value,数据存储位置,默认undefined 修改默认属性特性:Object.defineProperty(),接收三个参数:属性所在对象,属性名,描述符对象,描述符对象属性必

  • Qt 多语言程序设计的实现

    目录 简介 1.tr()函数使用 2.生成语言翻译文件 3.使用 Qt Linguist 翻译 ts 文件 4.调用翻译文件改变界面语言 简介 有些软件需要开发多语言界面版本,如中文版和英文版,并且在软件里可以方便地切换界面语言.Qt为多语言界面提供了很好的支持,使用Qt的一些规则和工具,可以很方便地为应用程序开发提供多界面支持. 使用Qt 开发多语言界面应用程序,主要包括以下几个步骤 . (1)在程序设计阶段,程序代码中每 一 个用户可见的字符串都用 tr()函数封装,以便 Qt 提取界面字符

  • javascript高级程序设计(第三版)学习笔记(一) 正则表达式整理

    1.创建正则表达式 第一种方式:注意这里的正则表达式不能使用单引号或者双引号,如下 var pattern1 = /[abc]/i; // 匹配第一个"a"或"b"或"c",不区分大小写 第二种方式:使用RegExp构造函数创建,该构造函数传入两个参数,都是字符串,所以需要特别注意"\"符号的转换,所有元字符(下面有讲元字符)需要双重转义,如下 复制代码 代码如下: var patt1 = new RegExp("[

  • 用C语言实现圣诞树(简易版+进阶版)

    目录 前言 初学者版: 初学者版2 以下是进阶版,更炫: 总结 前言 圣诞节快到了,这是我到CSDN度过的第一个圣诞节,也是我学习计算机的第一个圣诞节,为了让它更有意义,我呕心沥血,自己打了两版初学者版,再在网上找了一版进阶版,都十分精美,废话少说,代码奉上: 初学者版: #include<stdio.h> #include<windows.h> #include<string.h> void color(int x) { if(x>=0 && x

  • 零基础易语言入门教程(五)之逻辑型数据类型

    在上篇文章给大家介绍了零基础易语言入门教程(四)之数据类型,上篇针对数值到文本类型知识,今天给大家介绍下逻辑型数据. 具体方法和步骤如下所示: 1.逻辑型数据非真即假: 首先申请一个局部变量(A)类型为:逻辑型,编写代码为:A=1>2,那么输出的结果应为假,因等于1是赋值与1,然后代码中写道1大于2,所以这是假的,见下图所示: 2.关系运算符: 在上图大家需注意的是,A后面的等于号是赋值符号,而后面的≥,≠,<一些符号则是关系运算符. 关系运算符不是非要设置变量给其赋值才可以使用的,同样他可以

  • C语言程序设计50例(经典收藏)

    [程序1]题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 2.程序源代码: 复制代码 代码如下: #include "stdio.h"#include "conio.h"main(){  int i,j,k;  printf("\n");  for(i=1;i<5;i++) /*以下为三重循环*/   

  • JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))

    第一遍囫囵吞枣,不求甚解,感觉恍然大悟,结果晚上睡觉一想发现很多问题,什么都不明白,再看第二遍,发现原来是这样.过了几天一用,发现手写起来原来还是在凭记忆,于是下一遍,下一遍... 单凭记忆去弄清楚东西很不靠谱,时间一长脑袋空白.特别是技术上的很多思想和原理,只看不练,即便当时想得特别清楚,过久了也会忘.再者就是网上一些东西,只能说是提供了一种便捷的查看途径,事后还是自己总结为好,毕竟大多都是个人总结,一些概念很难讲的很清楚,而且两个人谈同一件事情,一般说的步骤和章节都是不同的,这样很容易形成交

  • C语言图书管理系统简洁版

    DOS界面的图书管理系统,具体内容如下 程序分为两块:管理员操作(收录图书.删除图书等)和会员操作(注册.借书.还书等): 1.管理员操作界面 2.会员操作界面 global.h头文件:(程序中只使用了一个编写的头文件,在这里存放了所有的接口函数以及需要使用到的头文件,还有结构体的定义) #include "iostream" #include "string" #include "fstream" #include "conio.h&

随机推荐