程序设计方法学作业参考答案(2010-2011冬)

合集下载

2010-2011-2A标准答案

2010-2011-2A标准答案

2010-2011-2《C语言程式设计》参考答案(A卷)一、单项选择题(每题1分,共30分)1.D2.A3.A4.C5.C6.B7.D8.B9.D 10.B11.D 12.C 13.D 14.D 15.D 16.A 17.D 18.B 19.D 20.A21.A 22.D 23.D 24.A 25.B 26.C 27.D 28.D 29.C 30.B三、程序改错题。

(每处2分,每题4分,共20分)41.(1)c=str[i];改为ch=str[i];,即c改为ch(2)将while((j>=0) || (ch<str[j]))改为while((j>=0) |&&(ch<str[j])),即将||改为&&42. (1)将double fun(double b, x0)改为double fun(double b, double x0),即将x0前加double(2)将if(abs(x1-x0)>=1e-6)改为if(fabs(x1-x0)>=1e-6),即将abs改为fabs43. (1)if(K>=0&&K<=6)改为if(k>=0&&k<=6),即将大写字母K改为小写字母k。

(2)for(i=0;i<=3;i++)改为for(i=1;i<=3;i++),即将i=0改为i=144.(1)将t=t/1000 改为 t=t%1000,即将/改为%。

(2)将for(i=1;i<y;i++)改为for(i=0;i<y;i++),即将i=1改为i=045.(1)将t=a;b=a;a=t;改为t=a;a=b;b=t;或其他交互方式。

(2)return (a)改为return (b),即将a改为b。

四、程序设计(共3题,每题10分,共30分)编程的改题原则,程序算法编写正确,有一个语法错误的可以给9分以上。

程序设计教程课后习题答案

程序设计教程课后习题答案

程序设计教程课后习题答案程序设计教程课后习题答案在学习程序设计的过程中,课后习题是非常重要的一部分。

通过完成习题,我们可以巩固所学的知识,提高编程能力。

然而,有时候我们可能会遇到一些难题,无法得到正确的答案。

因此,本文将给出一些常见的程序设计习题答案,希望对大家的学习有所帮助。

1. 习题一:编写一个程序,计算并输出1到100之间的所有偶数之和。

答案:```pythonsum = 0for i in range(1, 101):if i % 2 == 0:sum += iprint(sum)```2. 习题二:编写一个程序,判断一个数是否为素数。

答案:```pythondef is_prime(num):if num < 2:return Falsefor i in range(2, int(num ** 0.5) + 1):if num % i == 0:return Falsereturn Truenum = int(input("请输入一个数:"))if is_prime(num):print("是素数")else:print("不是素数")```3. 习题三:编写一个程序,找出一个字符串中出现次数最多的字符。

答案:```pythondef find_most_frequent_char(string):char_count = {}for char in string:if char in char_count:char_count[char] += 1else:char_count[char] = 1max_count = 0max_char = ''for char, count in char_count.items():if count > max_count:max_count = countmax_char = charreturn max_charstring = input("请输入一个字符串:")most_frequent_char = find_most_frequent_char(string)print("出现次数最多的字符是:", most_frequent_char)```4. 习题四:编写一个程序,实现冒泡排序算法对一个列表进行排序。

程序设计方法学部分答案

程序设计方法学部分答案

1、什么是程序设计方法学程序设计方法学是讲述程序的性质以及程序设计的理论和方法的一门学科,内容包括结构程序设计、数据抽象与模块化程序设计、程序正确性证明、程序变换、程序的形式说明与推导、程序综合技术、面向对象的程序设计法、大型程序设计方法学基础等2、结构程序设计是一种进行程序设计的原则和方法,按照这种原则和方法设计出的程序的特点是结构清晰、容易阅读、容易修改、容易验证。

3、结构程序设计的目标是什么?得到一个好结构程序4、结构化程序由哪些结构组成序列结构、选择结构、循环结构5、什么是逐步求精程序设计方法:就是在编制一个程序时,首先考虑程序的整体结构而忽视一些细节问题,然后逐步地、一层一层地细化程序直至用所选用的语言完全描述每一个细节,即得到所期望的程序为止。

6、逐步求精的优点逐步求精的最大优点是摆脱了传统的程序设计方法的束缚,按照先全局后局部,先整体后细节、先抽象后具体的过程组织人们的思维活动,使得编写的程序结构清晰、容易阅读、容易修改、同时还可以结合逐步求精的过程进行程序正确性验证,即采取边设计,边验证的方法,以简化程序正确性的验证。

7、流程图程序一个程序可以用流程图的形式表示出来,这种程序称为流程图程序。

严格地讲,流程图是一个描述程序的控制流程和指令执行情况的有向图。

他是程序的一种比较直观的表达形式。

一个程序的流程图通常由函数节点、谓词节点、汇点3种节点组成8、正规程序(1)具有一个入口线和一个出口线2、对每一个节点,都有一条从入口线到出口线的通路该点。

9、基本程序一个正规程序,如果不包含多于一个节点的正规子程序10、程序函数已知一正规程序P,对于每一个初始的数据状态X,若程序是终止的,那么有确定的最终数据状态Y。

对于每一个给定的X,值Y是唯一的,那么所有的有序对的集合{X,Y}定义了一个函数,我们称这个函数为程序P的程序函数。

11、程序函数等价如果程序P1和P2是相同的程序函数,称他们是函数等价的。

大学程序设计技术教材习题参考答案

大学程序设计技术教材习题参考答案

习题一一、简答题1.答:程序是计算任务的处理对象和处理规则的描述,即:程序=数据结构+算法,通俗地说就是用计算机语言描述的解决问题的步骤。

程序设计是给出解决特定问题程序的过程,包括问题分析、算法设计、程序源代码设计、测试、调试和维护。

2.答:利用计算机的解题过程大致分为4个阶段:①分析问题。

详细分析需要解决的问题,清楚地了解问题的需求;②设计算法。

将解决问题的方法或数学模型转换为解决问题的步骤,即设计算法;③编写程序。

就是将设计的算法等价映射(转换)为计算机语言的程序,所编写的程序从逻辑上看是算法的一种表现形式;④运行验证。

在计算机上运行并且排除潜在错误。

必要时,还要使用测试数据对程序进行测试,验证程序的正确性。

3.答:算法是精确定义的一系列规则的集合,这些规则规定了解决特定问题的一系列操作,以便在有限的步骤内产生出问题的答案。

通俗地说,算法就是解决问题的方法和步骤。

算法的特性有5个,即有穷性、确定性、可行性、输入和输出。

4.答:a图中r=0时,n的值也是0,n的前一个值赋值给了m,所以输出是m的值。

而b图中r=0时,n的值就是求余数为0时的分母,所以输出是n的值。

5.答:欧几里得算法使用了迭代算法策略。

6.答:构化程序设计以功能模块和过程设计为主,其要点是:①自顶向下,逐步求精;②模块化;③结构化。

7.答:①启动某个C/C++集成开发环境;②在编辑窗口输入源程序代码;③编译、连接程序,若有错误,重复2、3;④运行程序,若程序输出结果不正确,检查程序逻辑,重复2、3、4,直到输出结果正确。

二、设计题1.答:对应的伪代码算法表示如下:开始输入m,nr=mmod nwhile(r≠0){m=nn=rr=mmod n}输出r的值结束2.答:程序设计如下:#include<stdio.h>void main()·1·{int a,b,c,max;scanf("%d%d%d",&a,&b,&c);if(a>b) max=a; else max=b;if(max<c) max=c;printf("%d\n",max);}3.用传统流程图或N—S流程图表示下列各题的算法。

作业本_《C程序设计Ⅱ》答案

作业本_《C程序设计Ⅱ》答案

《C程序设计Ⅱ》作业本学院计算机信息工程学院班级学号姓名2010年2月第七部分函数一、选择题(共20分,每题1分)1.以下正确的函数形式是____D_。

A.double fun(int x,int y) B. fun(int x,y){ z=x+y; return z; } { int z; return z; } C.fun(x,y) D.double fun(int x,int y) { int x,y; double z; z=x+y; return z; } { double z; z=x+y; return z; } 2.C语言中,简单变量做参数.以下正确的说法是_____A__ 。

A.实参和与其对应的形参各占用独立的存储单元B.实参和与其对应的形参共占用一个存储单元C.只有当实参和与其对应的形参同名时才共占用存储单元D.形参是虚拟的,不占用存储单元3.若调用一个有返回类型的函数,且此函数中没有return语句,则该函数____D_______。

A.没有返回值B.返回若干个系统默认值C.能返回一个用户所希望的函数值D.返回一个不确定的值4.在C语言中,函数的数据类型是指_____A__ 。

A.函数返回值的数据类型B.函数形参的数据类型C.调用该函数时的实参的数据类型D.任意指定的数据类型5.以下不正确的说法是______A。

A.定义函数时,形参的类型说明可以放在函数体内B.return后边的值不能为表达式C.如果函数值的类型与返回值不一致,以函数值类型为准D.如果形参与其实参的类型不一致,以形参类型为准6.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是____B__ 。

A.地址传递B.单向值传递C.由实参传给形参,再由形参传回给实参D.由用户指定传递方式7.C语言规定,函数返回值的类型是由D_。

A.return语句中的表达式类型所决定B.调用该函数时的主调函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定8.下面函数调用语句含有实参的个数为_____ B。

程序设计基础教程习题答案

程序设计基础教程习题答案

程序设计基础教程习题答案程序设计基础教程习题答案程序设计是计算机科学中非常重要的一门学科,它涉及到如何使用计算机语言编写代码来解决问题。

在学习程序设计的过程中,练习习题是非常重要的一部分,它可以帮助我们巩固所学的知识,并提升我们的编程能力。

在本文中,我将为大家提供一些程序设计基础教程习题的答案,希望能对大家的学习有所帮助。

1. 请编写一个程序,计算并输出1到100之间所有偶数的和。

答案:```pythonsum = 0for i in range(1, 101):if i % 2 == 0:sum += iprint(sum)```2. 请编写一个程序,判断一个给定的整数是否为质数。

答案:```pythonnum = int(input("请输入一个整数:"))is_prime = Trueif num <= 1:is_prime = Falseelse:for i in range(2, int(num ** 0.5) + 1):if num % i == 0:is_prime = Falsebreakif is_prime:print(num, "是质数")else:print(num, "不是质数")```3. 请编写一个程序,求解一个给定整数的阶乘。

答案:```pythonnum = int(input("请输入一个整数:"))factorial = 1for i in range(1, num + 1):factorial *= iprint(num, "的阶乘为:", factorial)```4. 请编写一个程序,判断一个给定的字符串是否为回文字符串。

答案:```pythonstr = input("请输入一个字符串:")is_palindrome = Truefor i in range(len(str) // 2):if str[i] != str[-i - 1]:is_palindrome = Falsebreakif is_palindrome:print(str, "是回文字符串")else:print(str, "不是回文字符串")```5. 请编写一个程序,将一个给定的字符串中的所有单词进行反转。

[自学考试密押题库与答案解析]C++程序设计真题2011年10月

[自学考试密押题库与答案解析]C++程序设计真题2011年10月
7 / 17
[自学考试密押题库与答案解析]C++程序设计真题 2011 年 10 月
问题:6. 通过私有派生,基类的私有和不可访问成员在派生类中是不可访问的,而公有和 保护成员这时就成了派生类的______。 答案:私有成员 问题:7. 字符串类型的变量一般用______和字符数组类型的变量表示。 答案:字符指针 问题:8. 在一个 C++程序中,每个变量都必须遵循______的原则。 答案:先定义后使用 问题:9. 在常成员函数里不能更新对象的数据成员,也不能调用该类中没用______关键字修 饰的成员函数。 答案:const 问题:10. UML 是一种可视化建模语言,主要用于面向对象的______和建模。 答案:分析 问题:11. 复制构造函数采用拷贝方式使用已有对象来建立新对象,又称为______函数。 答案:拷贝构造 问题:12. 对于 C++类中的成员,若未使用访问权限关键字进行说明,默认的权限是______。 答案:private(或私有) 问题:13. 对象的行为是定义在对象属性上的一组______的集合。 答案:操作 问题:14. 设 int max(int,int)表示计算两个整数中的最大值,则执行语句“cout<< max(max(2,3),max(7,8));”的输出结果是______。 答案:8 问题:15. 函数 fun 的返回值是字符指针类型,该函数有两个参数,其中一个参数是字符类
[自学考试密押题库与答案解析]C++程序设计真题 2011 年 10ቤተ መጻሕፍቲ ባይዱ月
[自学考试密押题库与答案解析]C++程序设计真题 2011 年 10 月
C++程序设计真题 2011 年 10 月

程序设计设计教程答案

程序设计设计教程答案

程序设计教程答案汇报人:日期:目录CATALOGUE•程序设计基础概念•程序设计基本方法•高级程序设计技术•程序设计实践与案例分析01CATALOGUE程序设计基础概念计算机程序定义定义计算机程序是一组计算机指令的集合,用于指导计算机执行特定的任务。

这些指令通常是由程序员使用程序设计语言编写的。

功能计算机程序可以实现各种功能,从简单的计算到复杂的业务逻辑处理,以及游戏、图形用户界面(GUI)应用等。

执行程序被加载到计算机的内存中,并由中央处理器(CPU)执行。

执行程序时,CPU会逐条读取指令,并执行相应的操作。

010203程序设计语言分类高级语言如C、Python、Java等,更接近于人类自然语言,具有较高的抽象级别,能够更方便地表达算法和数据结构。

解释型语言和编译型语言解释型语言(如Python)在运行时由解释器逐行执行;编译型语言(如C)需要预先编译成机器码再执行。

低级语言如汇编语言,直接对应计算机的机器码,编程时需要关注硬件细节。

程序设计过程维护根据需求变化或发现的问题,对程序进行更新和优化。

测试与调试对程序进行测试,确保其按预期工作,发现并修正可能存在的错误。

编码使用选定的程序设计语言将算法实现为计算机程序。

问题分析明确程序需要解决的问题,理解问题的需求和背景。

算法设计设计解决问题的算法,这可以通过流程图、伪代码等方式进行描述。

02CATALOGUE程序设计基本方法面向过程程序设计定义面向过程程序设计是一种设计思想,它主要以过程或函数为中心,围绕过程或函数进行编程。

特点面向过程编程注重的是具体的实现步骤和过程,一般先进行系统功能分析,然后设计系统功能模块,最后实现模块功能。

适用场景面向过程的程序设计更适用于简单的、规模较小的程序开发。

面向对象程序设计定义面向对象程序设计是一种编程范式,它基于“对象”的概念,可以包含数据和对数据的操作。

面向对象编程主要关注对象,每一个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

程序设计方法学习题汇总

程序设计方法学习题汇总

《程序设计方法学》习题汇总一、简答题:1)何谓Proper程序?试举一例。

答:一个框图程序,若满足:i)一个入口,一个出口;ii)每个结点总有一条从入口到出口的路径通过它。

则称其为Proper2)何谓prime程序?试举一例。

答:Prime程序又称初等程序、基本程序。

是Proper程序且其中不包括由二个以上结点组成的Proper程序。

即最小的Proper程序。

例:3)给出Hoare关于程序部分正确和完全正确的定义。

答:给定Spec(φ, ψ),若对输入x满足φ(x),则程序S计算终止,且ψ(x , z)满足。

称S关于(φ, ψ)是完全正确的。

记为{φ}S{ψ}。

给定Spec(φ, ψ),若对输入x满足φ(x),当程序S计算终止时,满足ψ(x , z)。

称S关于(φ, ψ)是部分正确的。

记为[φ]S[ψ]。

4)Hoare关于程序部分正确和完全正确的定义有什么区别?为什么在证明程序S是完全正确时可以分别证明部分正确和终止?答:Hoare关于程序部分正确和完全正确的定义的区别在于程序的部分正确不保证程序的终止,而程序的完全正确保证程序即是部分正确的,同时又是终止的。

因为一个程序S是完全正确的等价于该程序是部分正确的同时又是终止的,因此在证明程序S是完全正确时可以分别证明部分正确和终止。

5)何谓抽象数据类型(ADT),它解决了程序设计中的什么问题?答:根据数据抽象的原则,符合“一个值集和作用在值集上的操作集”的数据类型,称为ADT。

ADT解决了程序设计中如何描述大型程序的形式规范问题。

其优点是:支持模块化、封装性、简化对正确性的验证、支持复用,提高软件质量。

6)面向对象的程序设计的本质是什么?与模块化程序设计的最大区别是什么?答:面向对象程序设计的本质是以对象为软件的构件,以类来叙述对象的行为,以消息来引发对象的行为。

与模块化程序设计相比,面向对象的程序设计将要构造的软件系统表示为对象集,每个对象是一组数据及其作用在其上的一组基本操作封装而成的实体,对象间通过消息传递实现联系。

2010年下半年(11月)软考程序员真题及标准答案

2010年下半年(11月)软考程序员真题及标准答案

由于在网上下了一张这个真题,由于在网上下了一张这个真题,结果里面带的答案是错误的,结果里面带的答案是错误的,结果里面带的答案是错误的,生气之于,生气之于,自己跑图书馆整理了一份答案出来,供大家参考,答案绝对正确了一份答案出来,供大家参考,答案绝对正确2010年下半年(11月)软考程序员真题-上午试题标准答案在线估分● 在Word 2003编辑状态下,若要将另一个文档的内容全部添加到当前文档的光标所在处,其操作是 (1) ;若要将文档中选定的文字移动到文档的另一个位置上,应该 按下 (2) ,将选定的文字拖曳至该位置上。

(1)A. 在“插入”菜单下选择“超链接”命令B. 在“插入”菜单下选择“文件”命令C. 在“文件”菜单下选择“打开”命令D. 在“文件”菜单下选择“新建”命令 (2)A. Ctrl 键 B. Alt 键 C. 鼠标左键 D . D. 鼠标右键● 某班级学生《C++程序设计》成绩表如下图所示。

若学生作业成绩、上机成绩和笔试成绩分别占综合成绩的15%、25%和60%,那么可先在E3单元格中输入 (3) , 再向垂直方向拖动填充柄至E10单元格,则可自动算出这些学生的综合成绩。

若要将及 格和不及格的人数统计结果显示在B11和E11单元格中,则应在B11和E11中分别填写 (4) 。

(3)A. =B3*15%+C3*25%+D3*60% B. =B$3*15%+C$3*25%+D$3*60% C. =SUM(B3*15%+C3*25%+D3*60%) D. =SUM(B$3*15%+C$3*25%+D$3*60%) (4)A. =COUNT(E3:E10,>=60)和=COUNT(E3:E10,<60) B. =COUNT(E3:E10,">=60")和=COUNT(E3:E10,"<60") C. =COUNTIF(E3:E10,>=60)和=COUNTIF(E3:E10,<60) D. =COUNTIF(E3:E10,">=60")和=COUNTIF(E3:E10,"<60") ● 下图中①、②和③分别表示电子邮件地址的 (5) 。

2011程序设计题参考答案

2011程序设计题参考答案

程序设计题参考答案(一)说明程序设计题主要是根据题目的要求先进行界面设计(参考Design.exe程序的运行结果),再设计事件代码。

完成后将工程文件以Design.vbp,窗体文件以Design.frm保存到考生目录下。

注:以默认方式命名控件,以从左至右,从上向下的顺序拖放控件。

例如有4个CommandButton类型的控件,命名按照如下方式:Command1 Command2Command3 Command4(二)程序设计题1、新建一个工程,完成“加法器”程序的设计,具体要求如下:(1)窗体的标题为“加法器”,固定边框。

(2)在窗体上从上到下依次引入Text1、Text2、Text3三个文本框,三个文本框的对齐方式均为右对齐。

(3)从上面两个文本框用于输入加数,要求不接受非数字键。

(4)下面一个文本框用于显示和,它不能进行编辑操作。

(5)单击“=”按钮(Command1),将两个加数的和显示在下面一个文本框中。

(6)单击“清空”按钮(Command2),三个文本框内容都被清空,同时第一个文本框获得焦点。

图1程序设计代码:Private Sub Form_Load() '界面设计,严格参照考试所提供的EXE文件运行界面进行设计'以下属性都可以在属性窗口中设置Form1.Caption = "加法器"Text1.Alignment = 1Text2.Alignment = 1Text3.Alignment = 1Text3.Locked = TrueCommand1.Caption = "="Command2.Caption = "清空"End SubPrivate Sub Command1_Click()Text3.Text = Val(Text1.Text) + Val(Text2.Text)End SubPrivate Sub Command2_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""Text1.SetFocusEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii < 48 Or KeyAscii > 57 Then '判断为非数字键KeyAscii = 0 '改变键入文本框的显示为空字符,即不显示End IfEnd SubPrivate Sub Text2_KeyPress(KeyAscii As Integer)If Not IsNumeric(Chr(KeyAscii)) ThenKeyAscii = 0End IfEnd Sub2、新建一个工程,完成“健康称”程序的设计,具体要求如下:(1)窗体的标题为“健康称”,固定边框。

程序设计基础习题答案

程序设计基础习题答案

程序设计基础习题答案程序设计基础习题答案程序设计是计算机科学中的重要领域,它涉及到了计算机软件的开发和实现。

在学习程序设计的过程中,习题是非常重要的一部分,通过解答习题可以帮助我们巩固所学的知识,并提高编程能力。

下面我将为大家提供一些程序设计基础习题的答案,希望对大家的学习有所帮助。

习题一:编写一个程序,计算从1到n的所有整数的和。

答案:```pythonn = int(input("请输入一个整数n:"))sum = 0for i in range(1, n+1):sum += iprint("从1到", n, "的所有整数的和为:", sum)```习题二:编写一个程序,判断一个数是否是素数。

答案:```pythonnum = int(input("请输入一个整数:"))is_prime = Trueif num < 2:is_prime = Falseelse:for i in range(2, int(num**0.5)+1):if num % i == 0:is_prime = Falsebreakif is_prime:print(num, "是素数")else:print(num, "不是素数")```习题三:编写一个程序,将一个字符串反转输出。

答案:```pythonstring = input("请输入一个字符串:")reverse_string = string[::-1]print("反转后的字符串为:", reverse_string)```习题四:编写一个程序,统计一个字符串中每个字符出现的次数。

答案:```pythonstring = input("请输入一个字符串:")char_count = {}for char in string:if char in char_count:char_count[char] += 1else:char_count[char] = 1for char, count in char_count.items():print(char, "出现的次数为:", count)```习题五:编写一个程序,将一个列表中的元素去重。

c语言部分课后题答案

c语言部分课后题答案
t=80*x+(x-y)*60;
else
t=90*x+(x-y)*60;
print f("总金额是%d",t);
}
EX5-11
#include<stdio.h>
Void main()
{ float g,y;
printf ("请输入价格:");
scanf("%f",&g);
if(g<=1000)
y=0;
}
EX4-6
#include<stdio.h>
void main()
{ floata,b;
floats;
printf("请输入三位数");
scanf("%f%f",&a,&b);
s=a*b/0.18;
printf("凡需后为%f",s);
}
EX4-7
#include<stdio.h>
void main()
printf("%d是闰年",year);
else
printf("%d不是闰年",year);
}
另:最牛算法:
#include<stdio.h>
void main()
{ inta;
printf("请输入一个整数年号");
scanf("%d",&a);
printf(a%(a%100?4:400)?"NO":"YES"); //建议看看赞叹一下即可,不必学习。。。

高教c语言程序设计(2011版)课后编程题答案

高教c语言程序设计(2011版)课后编程题答案

第三章顺序结构3.30 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。

※程序如下※main( ){int hour,minute;hour=560/60;minute=560%60;printf("hour=%d,minute=%d",hour,minute);}3.31 编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。

※程序如下※#include<stdio.h>main( ){int num1,num2,i,j; /* 定义变量 i-商,j-余数 */printf("input num1 and num2:\n");scanf("%d%d",&num1,&num2);i=n}3.32 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。

※程序如下※main( ){double a,b,c,average=0;printf("input a,b,c(double):\n");scanf("%lf%lf%lf",&a,&b,&c);average=(a+b+c)/3;average=average*10;average=average+0.5;average=(int)average;average=average/10;printf("average=%lf",average);}3.33 编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中的值给a。

※程序如下※main( ){int a,b,c,t=0;printf("input a b c:\n");scanf("%d%d%d",&a,&b,&c);t=c;c=b;b=a;a=t;printf("a=%d b=%d c=%d",a,b,c);}第四章选择结构4.21 当a>0时,请将以下语句改写成switch语句。

c程序设计第三版习题参考解答(全).

c程序设计第三版习题参考解答(全).

3.12 出下面表达式运算后 a 的值,设原来 a=12。设 a 和 n 都已定义为整型变量。 (1)a+=a (3)a*=2+3 (5)a%=(n%=2),n 的值等于 5 (2)a-=2 (4)a/=a+a (6)a+=a-=a*=a
解: (1)24 (3)60 (5)0 (2)10 (4)0 (6)0
注:如果没有学过二进制和补码,此题可以不做。
解:各数据在内存中的存储形式如下表所示: 变量的类型 int 型 long 型 short 型 signed char(8 位) unsigned int 型 unsigned long 型 unsigned short 型 unsigned char 型
1.6 写一个程序,输入 a,b,c 三个值,输出其中最大者。 解: main ( ) {int a,b,c,max; printf(“请输入三个数 a,b,c: \n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if (max<b) max=b; if (max<c) max=c; printf(“ 最大数为:%d ”,max); }
第 4 章 最简单的 C 程序设计——顺序程序 设计
4.4 若 a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51247,n=128765,c1=’a’,c2=’b’, 想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出) 。 要求输出的结果如下: a=□3□□b=□4□□c=□5 x= 1.200000,y= 2.400000,z= -3.600000 x+y=□3.60□□y+z=-1.20□□z+x=-2.40 u= □51247□□n=□□□128765 c1=‟a‟□or□97(ASCII) c2=‟b‟□or□98(ASCII) 解: main ( ) { int a,b,c; long int u,n; float x,y,z; char c1,c2; a=3;b=4;c=5; x=1.2;y=2.4;z= -3.6; u=51247;n=128765; c1=‟a‟;c2=‟b‟; printf(“\n”); printf(“a=%2d□□b=%2d□□c=%2d\n”,a,b,c); printf(“x=%.6f,y=%.6f,z=%.6f\n”,x,y,z); printf(“x+y=□%.2f□□y+z=%.2f□□z+x=%.2f\n”,x+y,y+z,z+x); printf(“u=%6ld□□n=%9ld\n”,u,n); printf(“c1=‟%c‟ or %d(ASCII)\n”,c1,c1); printf(“c2=‟%c‟ or %d(ASCII)\n”,c2,c2); }

程序设计方法学作业参考答案(2010-2011冬)

程序设计方法学作业参考答案(2010-2011冬)

程序设计方法学作业参考答案作业21、如所示框图是乘积z=x*y,其中只用加、加倍或减半三种操作,试推出每一语句的前提与结论。

Y)∧(U≥0)=X*YQ: {X,Y∈Z+}Q’: { Z=0∧U=X∧V=Y∧ X,Y∈Z+}→ρR’:{Z+U*V=X*Y ∧U≥0∧U=0}={Z =X*Y∧U=0}→ RA:{ Z+U*V=X*Y ∧U≥0∧U≠0}= {Z+U*V=X*Y ∧U>0}B: { Z+U*V=X*Y ∧U>0∧odd(U)}B’: { Z+U*V=X*Y ∧U>0∧┐odd(U)}B→C: C:{ Z+(U-1)*V=X*Y ∧U>0∧odd(U)}B’→C: C: { Z+U*V=X*Y ∧U>0∧┐odd(U)}B→C→D:{ Z+(U-1)*V=X*Y ∧U>0∧odd(U)} U:=U div 2 {z+2*U*v=x*y}V:=2*V D:{ Z+U*V=X*Y∧U>0 }→ρB’→C→D:{ Z+U*V=X*Y ∧U>0∧┐odd(U)} U:=U div 2 {z+2*U*v=x*y}V:=2*V D:{ Z+U*V=X*Y∧U>0 } ρ2、对下列S,R,试求wp(S,R)。

S R(1) i:=i+2;j:=j+2; i+j=0;(2) a[a[i]]:=i; a[i]=i;(3) x:=x+y; x<2*y;(4) x:=(x-y)*(x+y); x+y2≠0(5) a,n:=0,1; a2<n∧(a+1)2≥n;(6) i, j:=i+1,j+ i; i=j;解:(1)wp(“i:=i+2;j:=j+2;”, i+j=0)= wp(“i:=i+2;”, wp(“j:=j+2;”, i+j=0))= wp(“i:=i+2;”, i+j+2=0)= i+2+j+2=0= i+j+4=0(2)wp(“a[a[i]]:=i;”, a[i]=i)= (a[i]=i)a a;a[I]:i= a[i]=I(3)wp(“x:=x+y;”, x<2*y)= x+y<2*y=x<y(4)wp(“x:=(x-y)*(x+y);”, x+y2≠0)= (x-y)*(x+y) +y2≠0= x2-y2+y2≠0= x2≠0= x≠0(5)wp(“a,n:=0,1; ”, a2<n∧(a+1)2≥n)= (a2<n∧(a+1)2≥n) a,n0,1= 0<1∧1≥1= T∧T= T(6)wp(“i, j:=i+1,j+ i; ”, i=j)= (i=j) i,j i+1,j+i=i+1=j+i=j=13、已知数组b[0..n-1],求wp。

2011级C语言程序设计基础教程课后习题答案

2011级C语言程序设计基础教程课后习题答案

C语言课后习题习题答案详解(11级教材)第1章1.1 填空题1.1.1 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main 。

1.1.2 一个函数由__函数头__和__函数体__两部分组成。

1.1.3 在C语言中,输入操作是由库函数__scanf 完成的,输出操作是由库函数_printf_完成的。

1.1.4 通过文字编辑建立的源程序文件的扩展名是_.c__;编译后生成目标程序文件,扩展名是__.obj__;连接后生成可执行程序文件,扩展名是_.exe_;运行得到结果。

1.1.5 C语言程序的基本单位或者模块是__函数__。

1.1.6 C语言程序的语句结束符是_;___。

1.1.7 编写一个C程序,上机运行要经过的步骤:______________________________。

1.1.8 在一个C语言源程序中,注释部分两侧的分界符分别为_/*__和__*/__。

1.1.9 C语言中的标识符只能由三种字符组成,它们是字母、数字和下划线。

且第一个字符必须为字母或下划线。

1.1.10 C语言中的标识符可分为关键字、预定义标识符和用户标识符3类。

1.2 选择题1.2.1 一个C程序的执行是从( A )。

A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束1.2.2 以下叙述不正确的是(C)。

A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C) 在C程序中,注释说明只能位于一条语句的后面D) C程序的基本组成单位是函数1.2.3 C语言规定:在一个源程序中,main函数的位置( C )。

A)必须在程序的开头B)必须在系统调用的库函数的后面C)可以在程序的任意位置D)必须在程序的最后1.2.4 C编译程序是(A)。

C++2011年试卷及答案

C++2011年试卷及答案

C++2011年试卷及答案南京邮电⼤学通达学院 2010/2011学年第⼆学期《⾯向对象程序设计及C ++》期末试卷A本试卷共 8 页;考试时间 110 分钟;专业班级学号姓名⼀、选择题(20分,每题1分)1、C++源程序⽂件的扩展名是( B )。

A ..objB ..cppC ..exeD ..c2、下列关于类与对象关系的描述中,不正确的是( C )。

A .类是具有相同属性和⾏为的⼀类对象的抽象 B .对象是类的具体实体C .类与对象在内存中均占有内存单元D .类是创建对象的模板3、以下设置默认值的函数原型声明中错误的是( C )。

A .int add(int x, int y, int z=5);B .int add(int x, int y=4, int z=5);C .int add(int x, int y=4, int z);D .int add(int x=3, int y=4, int z=5); 4、系统在调⽤重载函数时往往根据⼀些条件确定哪个重载函数被调⽤,在下列选项中,不能作为依据的是( D )。

A .参数的个数B .参数的类型C .参数的顺序D .函数的返回类型5、下列⼏个运算符以类的成员函数形式重载时,(B )与其他3个的形式参数个数不⼀样。

A .后置++B .前置++C . +D ./ 6、采⽤函数重载的⽬的在于(A )。

A .实现共享B .减少空间C .提⾼速度D .使⽤⽅便,提⾼可读性7、下列运算符中,( C )运算符在C++语⾔中不能重载。

装订线内不要答题⾃觉遵守考试规则,诚信考试,绝不作弊A.+= B.[ ] C.::D.new8、下列定义引⽤类型变量时,(A )是正确的。

已知:int k=1000;A.int &x=k; B.char &y C.int &z=1000; D.float &t=&k9、(A )是析构函数的特征。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计方法学作业参考答案作业21、如所示框图是乘积z=x*y,其中只用加、加倍或减半三种操作,试推出每一语句的前提与结论。

Y)∧(U≥0)=X*YQ: {X,Y∈Z+}Q’: { Z=0∧U=X∧V=Y∧ X,Y∈Z+}→ρR’:{Z+U*V=X*Y ∧U≥0∧U=0}={Z =X*Y∧U=0}→ RA:{ Z+U*V=X*Y ∧U≥0∧U≠0}= {Z+U*V=X*Y ∧U>0}B: { Z+U*V=X*Y ∧U>0∧odd(U)}B’: { Z+U*V=X*Y ∧U>0∧┐odd(U)}B→C: C:{ Z+(U-1)*V=X*Y ∧U>0∧odd(U)}B’→C: C: { Z+U*V=X*Y ∧U>0∧┐odd(U)}B→C→D:{ Z+(U-1)*V=X*Y ∧U>0∧odd(U)} U:=U div 2 {z+2*U*v=x*y}V:=2*V D:{ Z+U*V=X*Y∧U>0 }→ρB’→C→D:{ Z+U*V=X*Y ∧U>0∧┐odd(U)} U:=U div 2 {z+2*U*v=x*y}V:=2*V D:{ Z+U*V=X*Y∧U>0 } ρ2、对下列S,R,试求wp(S,R)。

S R(1) i:=i+2;j:=j+2; i+j=0;(2) a[a[i]]:=i; a[i]=i;(3) x:=x+y; x<2*y;(4) x:=(x-y)*(x+y); x+y2≠0(5) a,n:=0,1; a2<n∧(a+1)2≥n;(6) i, j:=i+1,j+ i; i=j;解:(1)wp(“i:=i+2;j:=j+2;”, i+j=0)= wp(“i:=i+2;”, wp(“j:=j+2;”, i+j=0))= wp(“i:=i+2;”, i+j+2=0)= i+2+j+2=0= i+j+4=0(2)wp(“a[a[i]]:=i;”, a[i]=i)= (a[i]=i)a a;a[I]:i= a[i]=I(3)wp(“x:=x+y;”, x<2*y)= x+y<2*y=x<y(4)wp(“x:=(x-y)*(x+y);”, x+y2≠0)= (x-y)*(x+y) +y2≠0= x2-y2+y2≠0= x2≠0= x≠0(5)wp(“a,n:=0,1; ”, a2<n∧(a+1)2≥n)= (a2<n∧(a+1)2≥n) a,n0,1= 0<1∧1≥1= T∧T= T(6)wp(“i, j:=i+1,j+ i; ”, i=j)= (i=j) i,j i+1,j+i=i+1=j+i=j=13、已知数组b[0..n-1],求wp。

(1)wp(“b[i]:=i”, b[b[i]]:=i;)(2)wp(“b[i]:=5”, (∑j: i≤j<n: b[i] ≤b[j]))解:(1)wp(“b[i]:=i”, b[b[i]]:=i;)= (b[b[i]]:=i;) b b;i:i= (b;i:i)[ b;i:i[i]]:=i= (b;i:i)[ i]:=i= i:=I= T(2)wp(“b[i]:=5”, (∑j: i≤j<n: b[i] ≤b[j]))= (∑j: i≤j<n: b[i] ≤b[j]) b b;i:5= (∑j: i≤j<n: b;i:5 [i] ≤b;i:5 [j])= (∑j: i≤j<n: 5 ≤b;i:5 [j])= (∑j: i=j: 5 ≤5) ∨ (∑j: i<j<n: 5 ≤b [j])= T ∨ (∑j: i<j<n: 5 ≤b [j])= (∑j: i<j<n: 5 ≤b [j])作业31、写出有界集合的代数规范,然后予以实现。

实现用有界数组。

设有界集合的操作有emptyset, isempty, member, insert, delete, number(隐函数,表示元素的个数)假定界为5。

解:(1)有界集合的代数规范为:obj set;sorts set/integer, boolean;ok-opsemptyset:→set;isempty: set→boolean;member: set, integer→boolean;insert: set, integer→set;delete: set, integer→set;number: set→ integer;hidden;error-opsunderflow:→set;overflow:→set;ok-eqn’sisempty(emptyset)=true;isempty(insert(s,item))=false;member(emptyset, item)=false;member(insert(s,item1),item2) = if item1=item2 then trueelse member(s,item2)delete(insert(s,item1),item2) = if member(s,item1) then delete(s,item2)else if item1=item2 then selse insert(delete(s,item2),item1)number(emptyset)=0;number(insert(s,item)) = if member(s,item) then number(s)else number(s)+1error-eqn’sdelete(emptyset,item)=underflow;insert(s,item)=if number(s)>5 and not member(s,item) then overflow;jbo(2)用有界数组实现(a)有界数组的代数规范obj array;sorts array/integer;ok-opsnewarray:→array;assign: integer, array, integer→ arrray;read: array, integer→ integer;number: array→ integer; hidden;error-opsno-element:→integer;overflow:→array;ok-eqn’sread ( assign(val, arr, index1),index2)= if index1=index2 then valelse read(arr,index2);error-eqn’sread ( newarray, index)=no-element;assign(val, arr, index) = if index=number(arr)=5 overflow; jbo(b)用有界数组来实现有界集合implementation setBYarray;representation SET(array, integer)→set;programemptyset=SET(newarray,0);isempty(SET(arr,index))=(index=0);member(SET(arr,index,item)= if index=0 then falseelsefor index:=1 to n doif read(arr,index)=item then trueelse false;insert(SET(arr,index),item)= if index=5 then overflowelsebeginassign(SET(arr,index),item);index:=index+1;end;number(SET(arr,index))=index;delete(SET(arr,index),item)= if index=0 then no-elementelsefor index:=1 to 5 doif read(arr, index)=item thenfor i:=index to 4 doassign(read(arr, i+1),arr, i); end.作业45. 设L1和L2是含有相同分量个数之数值向量,若把它们当作表,试编写计算L1和L2内积的递归程序IP(L1, L2),并证明它的正确性。

----------------------------------------------------------- 提示:定义 3 设()12',,,n a a a = α,()12',,,n b b b = β为两个n 维向量,称实数1122n n a b a b a b +++ 为α与β的内积,记作[]1,ni ii a b ==∑αβ事实上,向量的内积可以用矩阵乘法[],'=αβαβ来表示。

向量的内积具有以下性质: 1.[][],,=αββα;2.[][],, k k k =∈ αβαβ; 3.[][][],,,+=+αβγαγβγ; 4.[]0≥α,α,当且仅当=αo 时,[]0=α,α成立。

-------------------------------------------------------------设 维向量L 1=[a 1, a 2, …, a n ], L 2=[b 1, b 2, …, b n ][L 1, L 2]= 1122n na b a b a b +++由此可知,当向量为一维时,结果就是两个元素的积;若多于一个,则结果为末尾元素的乘积加上除去末尾元素的n-1维向量的内积。

所以可以写出对应的递归程序:IP(L1, L2)≡if CDR (L1)=NIL then CAR(L1)* CAR(L2) Else CAR(L1)* CAR(L2)+ IP(CDR(L1)* CDR(L2))该程序是正确的。

证明:(1) 假设L1和L2各只含一个元素,则CDR (L1)=CDR (L2)=NIL ,IP(L1, L2)=CAR(L1)* CAR(L2)=a1*b1.程序运行正确。

(2) 归纳假设,假设对于一切含有n 个元素的L1’和L2’,程序运行正确。

即P(L1’, L2’)≡CAR(L1’)* CAR(L2’) if CDR (L1’)=NILCAR(L1’)* CAR(L2’)+ IP(CDR(L1’)* CDR(L2’)) 否则 也就是设L1’=[a1, a2, …, an], L2’=[b1, b2, …, bn] IP(L1’, L2’)≡1122n n a b a b a b +++由于n+1时,CDR(L1)≠NIL,所以设L1=[a1, a2, …, an, an+1], L2=[b1, b2, …, bn, bn+1]那么,IP(L1, L2)= CAR(L1)* CAR(L2)+IP(CDR(L1)* CDR(L2))=a1*b1+IP(CDR(L1)* CDR(L2))因为CDR(L1)和CDR(L2)含有n个元素,所以IP(CDR(L1)* CDR(L2))= a2*b2+a3*b3+…+an+1*bn+1所以,IP(L1, L2)= a1*b1+ a2*b2+a3*b3+…+an+1*bn+1所以,程序运行正确事实上,由于(N,<)是一个良序集,所以对于任何n∈N,归纳总在有限步结束(最终都归纳到n=1)。

相关文档
最新文档