第3章程序与递归:组合、抽象与构造练习题答案解析
java各章习题答案

java各章习题答案Java各章习题答案在学习Java编程语言的过程中,习题是非常重要的一部分。
通过习题,我们可以巩固所学的知识,加深对语言特性和用法的理解。
在每一章的学习结束后,我们都会遇到一系列的习题,这些习题涵盖了本章的知识点,帮助我们检验自己的掌握程度。
下面我们来看一下Java各章习题的答案。
第一章:Java基础知识1.1 什么是Java编程语言?Java是一种面向对象的编程语言,由Sun Microsystems公司于1995年推出。
它具有跨平台性和安全性等特点。
1.2 Java程序的基本结构是什么?Java程序的基本结构包括包名、导入语句、类声明、主方法和其他方法。
1.3 Java中的数据类型有哪些?Java中的数据类型包括基本数据类型和引用数据类型。
基本数据类型包括整型、浮点型、字符型和布尔型。
1.4 Java中的控制语句有哪些?Java中的控制语句包括if语句、switch语句、while循环、for循环等。
第二章:面向对象编程2.1 什么是面向对象编程?面向对象编程是一种程序设计范式,它将数据和方法封装在对象中,通过对象之间的交互来实现程序的功能。
2.2 Java中的类和对象有什么区别?类是一种抽象的概念,它用来描述对象的属性和行为;对象是类的实例,它具体描述了类的属性和行为。
2.3 Java中的继承和多态是什么?继承是一种类与类之间的关系,它允许一个类继承另一个类的属性和方法;多态是一种对象的多种形态,它允许同一个方法在不同的对象上具有不同的行为。
2.4 Java中的封装和抽象是什么?封装是一种将数据和方法封装在对象中的机制,它可以保护数据的安全性;抽象是一种将对象的共性特征提取出来的机制,它可以提高代码的复用性。
第三章:异常处理3.1 什么是异常?异常是程序在运行过程中发生的错误或意外情况,它可能导致程序的中断或崩溃。
3.2 Java中的异常处理机制有哪些?Java中的异常处理机制包括try-catch语句、throw语句和throws关键字等。
程序设计题库及答案详解

程序设计题库及答案详解程序设计题库及答案详解是面向计算机科学与技术专业学生以及编程爱好者的一份重要学习资料。
它不仅包含了大量的编程题目,还提供了详细的解题思路和答案,帮助读者深入理解程序设计的原理和技巧。
# 一、基础题目1. 题目1:编写一个程序,实现两个整数的加法。
- 答案详解:首先定义两个整数变量,然后使用加法运算符将它们相加,并将结果存储在一个新变量中。
最后,输出结果。
2. 题目2:编写一个程序,实现字符串的反转。
- 答案详解:可以使用循环结构遍历字符串的每个字符,并将它们添加到一个新的字符串的开始位置。
完成后,输出反转后的字符串。
# 二、数组与循环3. 题目3:编写一个程序,找出数组中的最大值。
- 答案详解:首先初始化一个变量来存储最大值,然后使用循环遍历数组中的每个元素,并与当前最大值进行比较,如果当前元素更大,则更新最大值。
循环结束后,输出最大值。
4. 题目4:编写一个程序,实现数组的排序。
- 答案详解:可以使用冒泡排序或选择排序等算法。
以冒泡排序为例,通过多次遍历数组,比较相邻元素的大小,并在必要时交换它们的位置,直到整个数组有序。
# 三、函数与递归5. 题目5:编写一个函数,计算两个数的乘积。
- 答案详解:定义一个函数,接受两个参数,然后在函数内部使用乘法运算符计算它们的乘积,并返回结果。
6. 题目6:编写一个递归函数,计算阶乘。
- 答案详解:定义一个递归函数,如果输入的数为0或1,则返回1;否则,返回输入数乘以递归调用该函数的结果,输入数减1。
# 四、数据结构7. 题目7:编写一个程序,实现链表的插入操作。
- 答案详解:首先定义链表节点的结构,然后编写一个函数来创建新的节点。
在插入操作中,根据插入位置的不同,调整节点的指针指向。
8. 题目8:编写一个程序,实现二叉树的遍历。
- 答案详解:可以使用前序、中序或后序遍历。
以中序遍历为例,首先遍历左子树,然后访问根节点,最后遍历右子树。
C++第三章课后答案

C++第三章课后答案C++第三章习题及答案1、什么是结构化程序设计?它有什么优缺点?所谓结构化程序设计,是一种自顶而下、逐步求精的模块化程序设计方法。
2、什么是对象?什么是类?简述对象与类之间的关系!对象是系统中用来描述客观事物的一个实体,它是用于构成系统的一个基本单位,而系统可以看作是由一系列相互作用的对象组成。
类定义了同类对象的公共属性和行为,属性用数据结构表示,行为用函数表示!《类=数据结构+对数据进行操作的函数》。
对象和类的关系相当于元素和集合的关系、变量和变量的“数据类型”的关系。
从程序设计的角度来说,类是一种复杂的自定义数据类型,对象是属于这种数据类型的变量。
3、什么是面向对象程序设计?面向对象程序设计方法具有哪些基本特征?请比较面向对象程序设计和面向对象过程程序设计有何异同?4、何谓成员变量?何谓成员函数?C++将对象的属性抽象为数据成员,将对象的行为抽象为成员函数。
5、C++中结构和类之间有何异同?结构在默认情况下的成员是公共的,而类在默认情况下的成员是私有的。
在C++中,结构是特殊的类。
6、在C++中如何定义类?如何实现定义的类?如何利用类申明对象?7、类的成员的访问权限有哪几种?请说明它们分别有什么作用?三种,privte:类的私有成员,只能被本类的成员函数访问或调用。
Public:公有成员,可以被本类的成员或其他类的成员函数(通过对象)访问或调用。
Protected:保护成员,可以被本类的成员函数或派生类的成员函数访问或调用。
8、何谓构造函数?何谓析构函数?请说明它们分别有什么作用?构造函数:不需要用户程序调用,就能在创建对象时由系统自动调用,其作用是在对象被创建时利用初始值去构造对象,使得在声明对象时就能自动完成对象的初始化。
析构函数:在对象的生存周期即将结束时由系统自动调用的,其作用是用来在对象被删除前做一些清理工作和数据保存工作。
9、如何定义一个内联成员函数?内联函:内联函数必须是和函数体申明在一起,才有效。
计算机程序的构造和解释--课后习题参考答案

第一章:构造过程抽象心智的活动,除了尽力产生各种简单的认识之外,主要表现在如下三个方面:1)将若干简单的认识组合为一个复合认识,由此产生出各种复杂的知识.2)将两个认识放在一起对照,不管它们如何简单或者复杂,在这样做时并不将它们合二为一.由此得到有关它们的相互关系的认识.3)将有关认识与那些在实际中和它们所同在的有关其它认识隔离开,这就是抽象,所有具有普遍性的认识都是这样得到的.John Locke 有关人类理解的随笔1690这一章是开篇,主要介绍的是Scheme语言的部分语法,并且通过使用简单的语法去达到一些不那么简单的数学问题.注意:在第三章以前都不会用到赋值,所以并没有大家习惯中的"循环",更多地通过递归来实现.练习:1.1 略1.2 略1.3CODEBOX(define (max a b c)(if (> a b)(if (> a c) a c)(if (> b c) b c)))1.4这题为读者模糊地提供了一个高阶函数的概念,还有过程和数据的统一结合.1.5本题的知识点是正则序和应用序的区别.考虑(define (p) (p))一旦(p)被求值,这个程序就会死掉.在正则序中,对函数的求值是这样的:先展开到只剩基本过程,再对其中"需要求值"的部分进行求值.在应用序中,函数的求值会先对每一个参数进行求值,然后把参数的值代入函数体中.所以,如果对(test 0 (p))使用应用序,那么(p)就会被求值,然后死循环.如果是正则序,那么先展开,之后做if条件判断,然后求值 0 ,因为(p) 没有需要,所以没有求值,可以正确返回.1.6本题和1.5的关注点是相同的.如果使用new-if的话,它的三个参数都会被求值(注意,Scheme默认工作在应用序下).而它的第三个参数会对自己进行递归调用.所以会死循环.1.7原始的good-enough?是检测两次的差的方式.对于很大的数,它的差可能根本无法精确到good-enough?要求的精度.而对于很小的数,可能它发生了相对于自己来说很大的改变,但是却比good-enough?要求的来得小.用比率的方法写good-enough?是可以的,但是要注意除以0这个问题.1.8 略1.2节:它开始讲解递归和迭代之异同(大魔王有言"迭代者为人,递归者为神").实际上,迭代是递归的一种特殊情况,既f(x) = f(x'),且f(x')比f(x)规模更小之时,递归可以化为迭代.递归的空间是线性增长的,而迭代始终为常数.这节主要掌握的是:函数的递归和迭代两种写法,还有对程序的分析.1.9第一个是递归的.第二个是迭代的.1.10 略...1.11CODEBOX(define (f n)(if (< n 3) n(+ (f (- n 1)) (* 2 (f (- n 2))) (* 3 (f (- n 3))))))(define (f2 n)(f2-iter 2 1 0 n))(define (f2-iter a b c count)(if (= count 0) c(f2-iter (+ a (* 2 b) (* 3 c)) a b (- count 1))));f是递归的,f2是迭代的,其中用到了f2-iter1.12CODEBOX(define (combination x y)(cond ((= x y) 1)((= y 0) 1)(else (+ (combination (- x 1) (- y 1))(combination (- x 1) y)))))1.13先证明Fib(n) = (a^n + b^n) / sqrt(5);其中a = (1 + sqrt(5)) / 2b = (1 - sqrt(5)) / 2可以使用归纳法,当然也可以通过解特征根方程解出来...似乎还可以用幂级数?(等等我去复习下离散数学)然后发现|b / sqrt(5)| < 0.5,所以命题得证.1.14空间线性增长步数是指数级的.因为其本质是一个线性递归方程.1.15SICP这种细节题也很有意思.a) 5次.我是用这个程序算的...CODEBOX(define (f x)(if (> (abs x) 0.1) (+ (f (/ x 3.0)) 1)0))或者再偷懒一点的话每个sine前面加一行display,这样最清楚...啊,你说算么?嗯,注意现在用的Scheme是应用序的,注意每次调用的传值性,所以只要算12.15除以3多少次以后< 0.1就好.b)时间和空间都是对数级别增长.(关于角度a)1.16CODEBOX(define (fast-expt x n)(iter 1 x n))(define (iter a b n)(cond ((= n 0) a)((odd? n) (iter (* a b) b (- n 1)))(else (iter a (* b b) (/ n 2)))))题目给了充分的提示,然而我还是想了一段时间...实际上就是倍增的思想.书中关于"不变量"的那一句很棒.1.17 同1.16的方法.1.18 同1.17的方法.1.19个人觉得按照那样写变换很不方便,于是直接写矩阵就好.观察发现向量(a b) * (0 1) = (b , a + b)(1 1)所以实际上只要做该矩阵的n次方就行了.根据A^n乘积与顺序无关这条定理,可以用fast-expt的方法做矩阵乘法,然后复杂度就是对数级的.题目中 p' = p^2 + q^2,q' = q^2 + 2pq.1.20再次提醒应用序和正则序的区别.因为应用序的先算再传值的性质,应用序为4次.正则序...先记remainder = r.(gcd a b)-> (if (= b 0) a (gcd b (r a b)))-> (if (= b 0) a (if (= (r a b) 0) b (gcd (r a b) (r (r a b) b)))-> (if (= b 0) a (if (= (r a b) 0) b (if (= (r (r a b) (r (r a b) b)) 0) (r a b) (gcd ....)到这里就看得很清楚了。
Java程序设计各章习题及其答案

Java程序设计各章习题及其答案第一章习题及思考题1、Java程序是由什么组成的?一个程序中必须有public类吗?Java源文件的命名规则是怎样的?答:一个Java源程序是由若干个类组成。
一个Java程序不一定需要有public类:如果源文件中有多个类时,则只能有一个类是public 类;如果源文件中只有一个类,则不将该类写成public也将默认它为主类。
源文件命名时要求源文件主名应与主类(即用public修饰的类)的类名相同,扩展名为.java。
如果没有定义public类,则可以任何一个类名为主文件名,当然这是不主张的,因为它将无法进行被继承使用。
另外,对Applet小应用程序来说,其主类必须为public,否则虽然在一些编译编译平台下可以通过(在BlueJ下无法通过)但运行时无法显示结果。
2、怎样区分应用程序和小应用程序?应用程序的主类和小应用程序的主类必须用public修饰吗?答:Java Application是完整的程序,需要独立的解释器来解释运行;而Java Applet则是嵌在HTML编写的Web页面中的非独立运行程序,由Web浏览器内部包含的Java解释器来解释运行。
在源程序代码中两者的主要区别是:任何一个Java Application 应用程序必须有且只有一个main方法,它是整个程序的入口方法;任何一个Applet小应用程序要求程序中有且必须有一个类是系统类Applet的子类,即该类头部分以extends Applet结尾。
应用程序的主类当源文件中只有一个类时不必用public修饰,但当有多于一个类时则主类必须用public修饰。
小应用程序的主类在任何时候都需要用public来修饰。
3、开发与运行Java程序需要经过哪些主要步骤和过程?答:主要有三个步骤(1)、用文字编辑器notepad(或在Jcreator,Gel, BuleJ,Eclipse, Jbuilder等)编写源文件;(2)、使用Java编译器(如Javac.exe)将.java源文件编译成字节码文件.class;(3)、运行Java程序:对应用程序应通过Java解释器(如java.exe)来运行,而对小应用程序应通过支持Java标准的浏览器(如Microsoft Explorer)来解释运行。
1132编号数据结构与算法习题及答案

第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
3.简述逻辑结构的四种基本关系并画出它们的关系图。
4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。
A.存储结构B.存储实现C.逻辑结构D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。
A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。
A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。
A.顺序队列 B. 链表 C.有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈6.试分析下面各程序段的时间复杂度。
(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O()n第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
自考教材《java语言程序设计(一)》第三章习题解答

第三章习题解答3.1什么是面向对象技术?它有什么优点?通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。
程序设计者考虑的是对象的描述、对象间的关系、类的管理、什么时候和什么地方调用对象的哪一种方法。
面向对象技术的最大优点是有效支持重用,使得大的程序也变得相对容易维护。
3.2面积对象的程序设计和面向过程的程序设计有什么区别?面向过程语言编程模式是:程序=数据结构+算法编程时需要考虑和内容是的程序什么、怎么做、重点考虑每个实现的细节。
面向对象的语言的编程模式是:程序=对象+消息程序设计者考虑的是对象的描述、对象间的关系、类的管理、什么时候和什么地方调用对象的哪一种方法。
3.3在程序中类和对象有什么区别?类是同一种对象的描述,类概括了同类对象的共有性质:数据和方法。
类的每个对象都有自己的标识,但它们具有相同的一级属性和提供相同的方法。
在程序中,对象的名称用于捐弃引用对象,对象的成员变量用于存储对象的状态值,对象和方法用于描述对象的行为。
3.4 类变量和实例变量,以及类方法和实例方法的区别。
加载类之前创建对象之后调用方法访问权限成员变量实例变量不分配内存各个对象之间各自分配独立的内存空间对象名.实例变量名被实例方法,构造方法访问类变量直接分配内存各个对象之间共享这段已经分配完的内存对象名.类变量名;类名.类变量名被实例方法,类方法,构造方法访问成员方法实例方法不分配入口地址共享一个入口地址对象名.实例方法名实例变量、类变量,实例方法、类方法类方法直接分配入口地址共享这个入口地址对象名.类方法名;类名.类方法名类变量、类方法3.5 子类能继承超类的哪些成员变量和方法?同包继承不同包继承(import进来的)私有(private)不继承不继承友好(缺省默认)继承不继承受保护(protected)继承继承共有(public)继承继承3.6 子类在什么情况下能隐藏超类的成员变量和方法?解:在子类重载父类的成员变量、方法的情况下。
Java语言程序设计课后习题解答-张思民-第三章

第3章面向对象程序设计基础【1】什么是Java程序使用的类?什么是类库?[解答]:Java程序的基本单位是类。
对象是对事物的抽象,而类是对对象的抽象和归纳,找出事物的共性,把具有共同性质的事物归结为一类,得出一个抽象的概念——类。
类是具有相同属性和方法的一组对象的集合,类是在对象之上的抽象,对象则是类的具体化,一旦建立类之后,就可用它来建立许多你需要的对象。
Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(Application Program Interface),它可以帮助开发者方便、快捷地开发Java程序。
【2】如何定义方法?在面向对象程序设计中方法有什么作用?[解答]:方法的定义由两部分组成:方法声明和方法体。
方法声明的基本格式如下:返回类型方法名(形式参数){… //方法体内容}方法声明包括方法名、返回类型和形式参数,方法的小括号是方法的标志;方法体为实现方法行为的Java语句。
在面向对象程序设计中,方法所起的作用是完成对类和对象属性操作。
【3】简述构造方法的功能和特点。
下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。
void Student(int no,String name){studentNo=no;studentName=name;return no;}[解答]:构造方法是一个特殊的方法,主要用于初始化新创建的对象。
构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。
以上的代码段出错于:①构造方法Student()前不能加void ②不能用return语句【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。
编写Java程序创建student类的对象及测试其方法的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章程序与递归:组合、抽象与构造1、关于计算系统与程序,下列说法正确的是_____。
(A)只有用计算机语言编写出来的代码才是程序,其他都不能称其为程序;(B)构造计算系统是不需要程序的,程序对构造计算系统没有什么帮助;(C)任何系统都需要程序,只是这个程序是由人来执行还是由机器自动执行,可以由机器自动执行程序的系统被称为计算系统;(D)程序是用户表达的随使用者目的不同而千变万化的复杂动作,不是使用者实现的而是需要计算系统事先完成的。
答案:C解释:本题考查程序,计算系统等的概念;(A)程序= 基本动作指令的一个组合或执行序列, 用以实现复杂的动作,只用计算机语言编写出来的代码称为程序,这个概念太狭隘了,A错误;(B)计算系统的一部分是由程序组成的,所以B错误;(C)计算系统= 基本动作+ 指令+ 程序执行机构,任何系统都需要系统,C完全正确;(D)程序= 基本动作指令的一个组合或执行序列, 用以实现复杂的动作,并不是由用户表达的,随使用者的不同而千变万化的复杂动作。
所以D是错的;具体内容参考第三章视频之“程序的作用和本质”及第三章课件。
2、关于程序,下列说法不正确的是_____。
(A)“程序”是由人编写的、以告知计算系统实现人所期望的复杂动作;(B)“程序”可以由系统自动解释执行,也可以由人解释由系统执行;(C)普通人是很难理解“程序”的,其也和“程序”无关;(D)“程序”几乎和每个人都有关系,如自动售票系统、自动取款机等。
答案:C解释:本题考查程序的概念;程序= 基本动作指令的一个组合或执行序列, 用以实现复杂的动作,所以A,B,D都是正确的;C说普通人很难理解程序,这显然是错误的。
所以选C;具体内容参考第三章视频之“程序的作用和本质”及第三章课件。
大学计算机-计算思维练习题集3、关于程序,下列说法不正确的是_____。
(A)程序的基本特征是复合、抽象与构造;(B)复合就是对简单元素的各种组合,即将一个(些)元素代入到另一个(些)元素中;(C)抽象是对各种元素的组合进行命名,并将该名字用于更复杂的组合构造中;(D)程序就是通过组合、抽象、再组合等构造出来的;(E)上述说法有不正确的。
答案:E解释:本题考查程序的概念;(A)程序的特征即是:组合-抽象-构造,所以A正确;(B)复合即是将简单的基本动作指令组合起来,实现复杂动作。
B正确;(C)抽象:将经常使用的、可由低层次系统实现的一些复杂动作,进行命名,以作为高层次系统的指令被使用,C正确;(D)通过前面三个选项可知,程序就是通过组合,抽象,再组合这样构造出来的。
综上可知E不正确。
具体内容参考第三章视频之“程序的作用和本质”及第三章课件。
4、一般而言,设计和实现一个计算系统,需要设计和实现_____。
(A)基本动作和程序;(B)基本动作和控制基本动作的指令;(C)基本动作、控制基本动作的指令和一个程序执行机构;(D)基本动作、控制基本动作的指令和程序。
答案:C解释:本题考查计算系统的概念;计算系统= 基本动作+ 指令+ 程序执行机构,所以ABC都描述不完整,只有C正确;具体内容参考第三章视频之“程序的作用和本质”及第三章课件。
5、一般而言,一个较高抽象层次的计算系统是可以这样实现的,即_____。
(A)将较低抽象层次的重复性组合,命名为较高抽象层次的指令;(B)利用较高抽象层次的指令进行复合、抽象与构造,即形成高抽象层次的程序;(C)高抽象层次的程序通过其程序执行机构解释为高抽象层次的指令及其操作次序;(D)高抽象层次的指令被替换为低抽象层次的程序,再由低抽象层次的程序执行机构解释并执行。
(E)上述A-D全部。
大学计算机-计算思维练习题集答案:E解释:本题考查计算系统的概念;(A )抽象:将经常使用的、可由低层次系统实现的一些复杂动作,进行命名,以作为高层次系统的指令被使用,所以,A 正确;(B )程序本身即是复合,抽象,构造的过程,B 正确;(C )(D )的描述都完全正确;所以综上所述,应该选E ;具体内容参考第三章视频之“程序的作用和本质” 及第三章课件。
6、熟悉下列运算组合式(前缀表达式),其中结果为56的是_____。
(A) (* 7 (+ 5 2));(B) (* (+ 5 3) (+ 5 2));(C) (+ 20 (+ 6 6));(D) (- (* 9 8) (- 20 2))。
答案:B解释:本题考查基本运算组合式的构造与计算,尤其是嵌套的运算组合式的计算对于一个前缀表达式的求值而言,首先要从右至左扫描表达式,从右边第一个字符开始判断,如果当前字符是数字则一直到数字串的末尾再记录下来,如果是运算符,则将右边离得最近的两个“数字串”作相应的运算,以此作为一个新的“数字串”并记录下来。
一直扫描到表达式的最左端时,最后运算的值也就是表达式的值。
所以,(A )的中缀表达式7*(2+5)=49;(B )(3+5)*(2+5)=56;所以选B ;(C )20+(6+6)=32;(D )(9*8)-(20 - 2)=54;所以答案选B ;具体内容参考第三章视频之“程序构造示例(I)” 及第三章课件。
7、对于计算式2*86*3482010+++,其正确的运算组合式(前缀表示法)为_____。
(A) (/ (+ 10 / 20 + 8 4) (+ * 3 6 * 8 2 ));(B) ((10 + (20 / (8 + 4))) / ((3 * 6) + (8 * 2)));(C) (/ (+ 10 (/ 20 (+ 8 4))) (+ (* 3 6) (* 8 2)));(D) (/ (/ 20 (+ 10 (+ 8 4))) (* (+ 3 6) (+ 8 2)))。
答案:C解释:大学计算机-计算思维练习题集本题考查运算组合式的书写与构造对于一个前缀表达式的求值而言,首先要从右至左扫描表达式,从右边第一个字符开始判断,如果当前字符是数字则一直到数字串的末尾再记录下来,如果是运算符,则将右边离得最近的两个“数字串”作相应的运算,以此作为一个新的“数字串”并记录下来。
一直扫描到表达式的最左端时,最后运算的值也就是表达式的值。
我们可以将答案中的四个选项都转化成中缀表达式,发现C完全符合题意;具体内容参考第三章视频之“程序构造示例(I)”及第三章课件。
8、请用define运算,定义一个过程实现计算a3,其正确定义的过程为_____。
(A) (define cube a (* a a a));(B) (define (cube x) (* x x x));(C) (define (cube a (* a a a)));(D) (define (cube a) (* x x x)))。
答案:B解释:本题考查新运算符(即过程)的定义(cube x)中,cube是新运算符,x是形式参数,使用时将被实际参数替代。
(*x x x)是过程体,用于表示新运算符的具体计算规则,其为关于形式参数x的一种计算组合。
所以综上所述应选择B,满足条件;具体内容参考第三章视频之“程序构造示例(II)”及第三章课件。
9、已知一个新运算被定义为(define (newCalc x y) (* (+ x 1) (* y 2))),问newCalc 可以完成的计算功能为_____。
-(A) (x+1)+2y;(B) (x+1)*2y;(C) (x+1) +(y+2);(D) (x+1)*(y+2)。
答案:B解释:本题考查新运算符(即过程)的定义此题是定义了个一个有关x和y的心运算newCale,后面(* (+ x 1) (* y 2))转化成中缀表达式:即为(x+1)*2y,所以选B;具体内容参考第三章视频之“程序构造示例(II)”及第三章课件。
大学计算机-计算思维练习题集10、已知一个新运算被定义为(define (newCalc x y) (* (+ x 1) (* y 2))),问正确使用了newCalc并得到正确结果的为_____。
(A) ((newCalc) (4 5)),其结果为50;(B) (newCalc 4),其结果为40;(C) (newCalc 4 5),其结果为50;(D) (newCalc 2 3),其结果为21。
答案:C解释:本题考核新运算符(即过程)的定义和使用。
本题定义的新运算是(x+1)*(y*2)。
(A)和(B)使用方法不正确;(C)将x=4,y=5代入新运算得50,所以是正确的;(D)将x=2,y=3代入新运算得18,是错误的。
具体内容请参考第三章课件之“程序构造示例”及第三章课件。
11、已知一个新运算被定义为(define (newCalc x y) (* (+ x 1) (+ y 1))),问(newCalc (newCalc (newCalc 1 1) 2) 3)的计算结果为_____。
(A) 6 ;(B) 13;(C) 64;(D) 24。
答案:C解释:本题考核新运算符(即过程)的定义和嵌套使用。
本题定义的新运算是(x+1)*(y+1)。
先计算最里层的(newCalc 1 1)=(1+1)*(1+1)=4;再计算(newCalc (newCalc 1 1) 2)=(newCalc 4 2)= (4+1)*(2+1)=15;最后计算(newCalc (newCalc (newCalc 1 1) 2) 3)=(newCalc 15 3) = (15+1)*(3+1)=64,即最终结果是64,所以(C)是正确的。
具体内容请参考第三章课件之“程序构造示例”及第三章课件。
12、已知一个新运算被定义为(define (newCalc x y) (* (+ x 1) (+ y 1))),问(newCalc (newCalc (newCalc 1 1) (newCalc 1 1)) (newCalc 1 1))的计算结果为_____。
(A) 1 ;(B) 64;(C) 130;(D) 8。
答案:C解释:本题考核新运算符(即过程)的定义和嵌套使用。
本题定义的新运算是(x+1)*(y+1)。
先计算(newCalc 1 1)=(1+1)*(1+1)=4;再计算(newCalc (newCalc 1 1) (newCalc 1 1))=(newCalc 4 4)= (4+1)*(4+1)=25;最后计算(newCalc (newCalc大学计算机-计算思维练习题集(newCalc 1 1) (newCalc 1 1)) (newCalc 1 1))=(newCalc 25 4) = (25+1)*(4+1)=130,即最终结果是130,所以(C)是正确的。
具体内容请参考第三章课件之“程序构造示例”及第三章课件。