程序设计基础-基于-C语言(第2版~)课后习题参考-答案~.doc

上传人:小** 文档编号:2082301 上传时间:2019-04-18 格式:DOC 页数:48 大小:962.50KB
下载 相关 举报
程序设计基础-基于-C语言(第2版~)课后习题参考-答案~.doc_第1页
第1页 / 共48页
程序设计基础-基于-C语言(第2版~)课后习题参考-答案~.doc_第2页
第2页 / 共48页
程序设计基础-基于-C语言(第2版~)课后习题参考-答案~.doc_第3页
第3页 / 共48页
程序设计基础-基于-C语言(第2版~)课后习题参考-答案~.doc_第4页
第4页 / 共48页
程序设计基础-基于-C语言(第2版~)课后习题参考-答案~.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、#*习题 1 参考答案1.1 解释以下术语(1)计算机软件:计算机软件是一系列按照特定结构组织的程序、数据(Data)和文档(Document)的集合。(2)计算机程序:用计算机语言所编写的一系列指令的集合。(3)数据:数据是程序加工和处理的对象。(4)算法:算法是一组有穷的规则,它们规定了为解决某一特定问题而采取的一系列运算步骤。 (5)数据结构:数据结构是存在一种或多种特定关系的数据元素的集合,其外在表现为数据的组织形式。(6)数据类型:数据类型是一个值的集合和定义在这个值集上的操作的总称。(7)程序设计:程序设计是给出解决特定问题程序的方法和过程,是软件构造活动中的重要组成部分。1.2

2、简答题(1)简述内存的组织结构形式?计算机系统把内存看作是由若干个连续的存储单元(Storage Location)组成的,每个存储单元的大小为一个字节(Byte) 。为了能唯一标志每个存储单元,在计算机系统中给每个存储单元指定一个唯一的编号,该编号被称为存储单元的地址(Address) ,计算机在读写内存时就是按照存储单元的地址进行的。(2)为什么计算机系统是一个通用的计算系统?在计算机硬件相对固定不变的前提下,计算机的通用性主要表现在通过运行不同的程序来完成不同的计算任务。(3)简述结构化程序设计的基本思想?在程序设计过程中,如果仅仅使用顺序、选择和循环这三种基本控制结构,并且使每个代码块

3、只有一个入口和一个出口,则这样的程序设计方法被称为结构化程序设计(Structured Programming) 。(4)简述计算机语言的发展史?程序设计语言经历了从机器语言、汇编语言、高级语言到超高级语言的发展历程。(5)简述利用计算机进行问题求解的过程?1、理解问题特征2、设想解决方案3、优化解决方案4、描述解决方案5、执行并分析解决方案(6)简述各个程序质量要素的含义?1、正确性(Correctness):正确性是指一个计算机程序的正确程度,即程序在预定#*的运行环境下能正确完成预期功能的程度。2、鲁棒性(Robustness):鲁棒性也称为健壮性,是指在硬件发生故障、输入数据无效或操作

4、错误等意外情况下,程序能做出响应的程度。3、效率(Efficiency):效率是指为了完成预定的功能,系统需要的计算资源(主要包括计算时间和存储空间)的多少。4、易用性(Usability):易用性又称为可用性,是指在完成预定功能时人机交互的难易程度。易用性高的程序容易被程序用户理解和掌握,使用户操作简单方便。5、可理解性(Understandability):可理解性是指理解程序的难易程度。可理解性高的程序才容易测试和维护。如果程序难以读懂,就会给测试和维护带来巨大的困难。6、可测试性(Testability):可测试性是一个计算机程序能够被测试的容易程度。为了提高程序的可靠性,必须通过测试

5、尽可能多得发现并改正程序中的错误。程序的可测试性直接影响测试的质量和效率。7、可维护性(Maintainability):诊断和改正程序错误以及功能扩充和性能提高的容易程度。程序设计是一个迭代过程,要开发出高质量的程序需要对程序进行多次修改和完善。程序的可维护性决定了上述工作的质量和效率。8、可重用性(Reusability):可重用性是指在其它应用中该程序可以被再次使用的容易程度。如果我们在开发新程序时,能够直接或稍加修改就能利用原有的程序,则会大大提高新程序开发的质量和效率。因此,提高程序的可重用性是提高程序设计质量和效率的根本途径。1.3 计算题(1)计算-1 的 8 位原码、反码、补码

6、和 Excess_127 码。分别为:10000001B、11111110B、11111111B、01111110B(2)计算机内存中相邻四个字节的值为 10111110000000000000000000000000,试问该值表示的实数、有符号数和无符号数各为多少?分别是:实数 0.125、有符号数-1107296256(负数在计算机中用补码表示)无符号数3187671040(3)字符A、 a、 1的 ASCII 值是多少,给出将大写字母的 ASCII 转换成对应小写字母 ASCII 值得计算公式。A:41H a:61H 1:31H大写转化为小写:大写字母的 ASCII 值+20H=小写字母

7、的 ASCII 值1.4 为下列问题求解设计算法,并分别用程序流程图、N S 盒图和 PAD 图加以描述。(1)有两个调料盒 S1 和 S2,分别盛有糖和盐,要求将它们互换(即 S1 盒原来盛糖,现在改盛盐;S2 同理) 。算法思想:这是一个两个变量交换值的问题,可以设置一个临时变量,首先把 S1 的值放入临时变量中,然后将 S2 的值放入 S1 中,最后将临时变量的值放入 S1 中即可。#*程序流程图:设置临时变量 TT = S 2S 2 = S 1S 1 = T输入 S 1 、 S 2开始结束N-S 盒图:输入 S 1 、 S 2定义临时变量 TT = S 1S 1 = S 2 ;S 2

8、= T ;PAD 图:输入 S 1 、 S 2定义临时变量 TT = S 1 ; S 1 = S 2 ; S 2 = T(2)依次输入 6 个整数,要求输出其中最小的数。算法思想:定义一个临时变量用来存放最小的数,首先输入第一个数赋值于临时变量,然后循环输入其余的整数,比较输入的整数和临时变量的大小,如果大于临时变量则继续输入,反之,则给临时变量赋值为次此数。最后临时变量中存放的数输入的数中的最小数,输入临时变量即可。程序流程图:#*开始定义变量 X和 T输入第一个整数并赋值于 TX T输入下一个整数赋值于X输入完毕输出 T结束T = XYNYNN-S 盒图:定义变量 X 和临时变量 T输入第

9、一个数并赋值给 T输入下一个整数赋值于 XX TY NT = X输出 TPAD 图:#*定义变量 X 和临时变量 T输入第一个整数赋值于 T输入下一个整数赋值于 XX TT = X输出 T(3)输入 3 个整数,按从大到小的顺序输出。算法思想:输入三个数 a、b、c,首先比较 a 和 b,如果 ab,则比较 c 和 a,如果 ca则输出 c、a、b;如果 cb,输出 a、c、b,否则输出 a、b、c;对于 a bc aY输出 c , a , bc b依次输出a , c , b输出 a , b , c结束NYYNc b输出 c , b , a输出 b , a , c输出 b , c , aYNc

10、 aYNNN-S 盒图:#*输入三个数并赋值给 a , b , ca bY Nc bc a NY Y N输出a , c , b输出 c , a , bc bY N输出a , b , c输出b , c , a输出 c , b , ac aY N输出b , a , cPAD 图:a b输入三个数赋值给 a , b , cc a输出 c , a , b输出 a , c , b输出 a , b , cc bc b输出 c , b , a输出 b , c , a输出 b , a , cc a(4)求 1*2*3*10。算法思想:定义一个变量用来存放最后的值,赋初值为 1,做十次循环,每次循环在原来变量的

11、基础上乘循环变量值(即 1-10) ,最后输出这个变量即可。程序流程图:#*开始c o u n t = 1i = 1i = 1A % C = = 0 A N D B % C = = 0YN输出 C C - -PAD 图:#*两数 A , B 公约数 CA = 1 )A % C = = 0 A N D B % C = = 0输出 CC - -1.5 算法思考题(1)钞票换硬币:把一元钞票换成一分、二分、五分硬币(每种至少一枚) ,有哪些种换法?分析:1 元相当于 100 分,设 5 分、2 分、1 分的硬币数分别为 X、Y、Z,求换法就是在寻找这样一种组合,使得 5*X+2*Y+Z =100,所

12、以每当找到 1 种组合时,将个数记录下来,就可知换法有多少种,算法描述如下:Count = 0; /用于记录个数,初始为 0for(X=1;X=20;X+)for(Y=1;Y=50;Y+)for(Z=1;Z=100;Z+)if(5*X + 2*Y + Z = 100) /可实现交换Count +;输出 Count(2)百钱买百鸡:一只公鸡值元,一只母鸡值元,只小鸡值元,现用一百元要买一百只鸡,问有什么方案?分析:由题意可知,假设公鸡、母鸡、小鸡分别有 X、Y、Z 只,那么 X、Y、Z 满足:X+Y+Z=100,而且要满足钱数限定:5*X+3*Y+1/3*Z = 100,由于 3 只小鸡 1 元

13、钱,所以小鸡的个数必须是 3 的整数倍,即:Z 是 3 的整数倍。可通过限制条件,筛选出满足条件的X,Y,Z。当然 X、Y、Z 还满足以下条件:5*X = 100;3*Y = 100;Z = 100。以下是算法描述:for(X=0;X=100;X+)for(Y=0;Y=100;Y+)for(Z=0;Z=100;Z+)#*if(5*X=100 and 3*Y=100 and z%3=0)if(X+Y+Z=100 and 5*X+3*Y+Z/3 = 100)输出 X、Y、Z;(3)斐波那契兔子的问题:某人有一对兔子饲养在围墙中,如果它们每个月生一对兔子,且新生的兔子在第二个月后也是每个月生一对兔子

14、,问一年后围墙中共有多少对兔子。分析:第一个月是最初的一对兔子生下一对兔子,围墙内共有两对兔子。第二个月仍是最初的一对兔子生下一对兔子,共有 3 对兔子。到第三个月除最初的兔子新生一对兔子外,第一个月生的兔子也开始生兔子,因此共有 5 对兔子。继续推下去,第 12 个月时最终共有对 377 对兔子。由分析知,每个月的兔子都是上个月的兔子与新增兔子之和,而上个月新生的兔子到下个月才会生兔子,所以新增的兔子都是上两月的兔子生的。设每个月的兔子数为 F(n),则可列出下列式子:F(0) = F(1) = 1F(n) = F(n-1) + F(n-2)显然可用递归的方法解出此题,算法流程图如下:开始F ( n ) = 0i = 0i = = 0 | | i = = 1F ( i ) = 1F ( i ) = F ( i - 1 ) + F ( i - 2 ) i + +i = = 1 2输出 F ( i )开始TFFT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。