第8章_泛型编程习题_参考答案
C++程序设计习题答案第八章
第八章继承与多态习题一.基本概念与基础知识自测题8.1填空题8.1.1 如果类α继承了类β,则类α称为(1)类,而类β称为(2)类。
(3)类的对象可作为(4)类的对象处理,反过来不行,因为(5)。
如果强制转换则要注意(6)。
答案:(1)基类(2)派生类(3)派生类(4)基类(5)派生类有一些新成员(6)只能派生类强制转换为基类8.1.2 当用public继承从基类派生一个类时,基类的public成员成为派生类的(1)成员,protected成员成为派生类的(2)成员,对private成员是(3)。
公有派生可以使其类的(4),所以公有派生是主流。
答案:(1)public成员(2)protected成员(3)不可访问(4)接口不变8.1.3 利用继承能够实现(1)。
这种实现缩短了程序开发的时间,VC++中的(2)很好地体现了这一点。
答案:(1)代码的复用(2)MFC编程8.1.4 一个派生类只有一个直接基类的情况称为(1),而有多个直接基类的情况称为(2)。
继承体现了类的(3)概念,这在MFC中得到了很好表现,MFC中只采用了(4)。
答案:(1)单继承(2)多重继承(3)层次(4)单继承8.1.5 C++中多态性包括两种多态性:(1)和(2)。
前者是通过(3)实现的,而后者是通过(4)和(5)来实现的。
答案:(1)编译时的(2)运行时的(3)函数和运算符的重载(4)类继承关系(5)虚函数8.1.6 在基类中将一个成员函数说明成虚函数后,在其派生类中只要(1)、(2)和(3)完全一样就认为是虚函数,而不必再加关键字(4)。
如有任何不同,则认为是(5)而不是虚函数。
除了非成员函数不能作为虚函数外,(6)、(7)和(8)也不能作为虚函数。
答案:(1)同虚函数名(2)同参数表(3)同返回类型。
如基类中返回基类指针,而派生类中返回派生类指针是允许的(4)virtual(5)重载(6)静态成员函数(7)内联函数(8)构造函数8.1.7 纯虚函数定义时在函数参数表后加(1),它表明程序员对函数(2),其本质是将指向函数体的指针定为(3)。
课后答案——C++语言程序设计教程(第二版)
1.1习题1解答1.(1)机器语言是计算机直接理解执行的语言,由一系列(二进制)指令组成,其助记符构成了汇编语言;接近人的自然语言习惯的程序设计语言为高级语言。
(2)结构化程序设计方法主要内容有:自顶向下,逐步求精;面向对象方法将现实世界中的客观事物描述成具有属性和行为的对象,抽象出共同属性和行为,形成类。
(3)C++程序开发通常要经过5个阶段,包括:编辑,编译,连接,运行,调试。
首先是编辑阶段,任务是编辑源程序,C++源程序文件通常带有.c p p扩展名。
接着,使用编译器对源程序进行编译,将源程序翻译为机器语言代码(目标代码),过程分为词法分析、语法分析、代码生成3个步骤。
在此之前,预编译器会自动执行源程序中的预处理指令,完成将其他源程序文件包括到要编译的文件中,以及执行各种文字替换等。
连接器的功能就是将目标代码同缺失函数的代码连接起来,将这个“漏洞”补上,生成可执行文件。
程序运行时,可执行文件由操作系统装入内存,然后CPU从内存中取出程序执行。
若程序运行进程中出现了错误,还在需要对程序进行调试。
(4)对象与对象之间通过消息进行相互通信。
(5)类是具有相同属性和行为的一组对象的抽象;任何一个对象都是某个类的一个实例。
(6)多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
(7)面向对象的软件开发过程主要包括面向对象的方法分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的维护。
(8)泛型程序设计是指在程序设计时,将数据类型参数化,编写具有通用性和可重用的程序。
(9)#include<iostream>是一条预处理指令(语句),在编译(或预处理)时由编译器(或预编译器)执行,其功能是将iostream文件包含(复制)到指令处。
(10)C++中使用cin作为标准输入流对象,通常代表键盘,与提取操作符>>连用;使用cout作为标准输出流对象,通常代表显示设备,与<<连用。
c程序设计第三版习题参考解答(全)
C程序设计(第三版)课后习题参考解答第1章 C语言概述1.5 参照本章例题,编写一个C程序,输出以下信息:******************************Very Good!******************************解:main ( ){printf(“****************************** \n”);printf(“\n”);printf(“ Very Good! \n”);printf(“\n”);printf(“****************************** \n”);}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);}第2章程序的灵魂——算法2.1 什么叫结构化的算法?为什么要提倡结构化的算法?解:由一些基本结构顺序组成的算法称为结构化的算法。
由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。
2.7 什么叫结构化程序设计?它的主要内容是什么?解:结构化程序就是用高级语言表示的结构化算法。
它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。
第3章数据类型、运算符与表达式3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。
注:如果没有学过二进制和补码,此题可以不做。
解:各数据在内存中的存储形式如下表所示:变量的类型25 -2 32769int型00 (000011001)8 位111111111111111015100 … 001(溢出)14long型00 (000011001)24 11 (1110)3100... 0100 (001)16 14short型100 (000011001)8 111111111111111015100 … 001(溢出)14signed char(8位)100011001 11111110 00000001(溢出)unsigned int型00 (000011001)8 11 (110)15100 (001)14unsigned long型00 (000011001)24 11 (110)3100... 0100 (001)16 14unsigned short型00 (000011001)8 11 (110)15100 (001)8unsigned char型00011001 11111110 00000001其中int和short类型,其取值范围是-32768~32767。
c++面向对象课后答案第8章
1.1在C++中,三种派生方式的说明符号为public、private、protected不加说明,则默认的派生方式为private。
1.2当公有派生时,基类的公有成员成为派生类的公有成员;保护成员成为派生类的保护成员;私有成员成为派生类的不能直接访问成员。
当保护派生时,基类的公有成员成为派生类的保护成员;保护成员成为派生类的保护成员;私有成员成为派生类的不能直接访问成员。
1.3 派生类的构造函数一般有3项工作要完成:首先基类初始化,其次成员对象初始化,最后执行派生类构造函数体。
1.4多继承时,多个基类中的同名的成员在派生类中由于标识符不唯一而出现二义性。
在派生类中采用虚基类或作用域分辨符来消除该问题。
2.简答题2.1 派生类如何实现对基类私有成员的访问?2.2什么是类型兼容规则?2.3派生类的构造函数是怎样的执行顺序,析构函数的执行顺序是如何实现的?2.4继承与组合之间的区别与联系是什么?2.5什么是虚基类?它有什么作用?含有虚基类的派生类的构造函数有什么要求,什么是最远派生类,建立一个含有虚基类的派生类的对象时,为什么由最远派生类的构造函数负责虚基类的初始化?3.选择题3.1下面对派生类的描述中,错误的是(D )。
A.一个派生类可以作为另外一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类中保持不变3.2下列对友元关系叙述正确的是(A)。
A.不能继承B.是类与类的关系C.是一个类的成员函数与另一个类的关系D.提高程序的运行效率3.3当保护继承时,基类的(B)在派生类中成为保护成员,不能通过派生类的对象来直接访问。
A.任何成员B.公有成员和保护成员C.公有成员和私有成员D.私有成员3.4设置虚基类的目的是(B)。
A.简化程序B.消除二义性C.提高运行效率D.减少目标代码3.5在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C )。
《C语言程序设计教程》(第三版)课后习题参考答案(精选5篇)[修改版]
第一篇:《C语言程序设计教程》(第三版)课后习题参考答案C语言程序设计课后习题参考答案习题一一、单项选择题1、C2、B3、B4、C5、D6、A7、C8、A二、填空题1、判断条件2、面向过程编程3、结构化4、程序5、面向对象方法6、基本功能操作、控制结构7、有穷性8、直到型循环结构9、算法10、可读性11、模块化12、对问题的分解和模块的划分习题二一、单项选择题1、B2、D3、C4、B5、A二、填空题1、主2、C编译系统3、结构化4、程序5、面向对象方法6、.OBJ7、库函数8、直到型循环结构习题三一、单项选择题1、D2、B3、A4、C9、B10、C11、A12、D13、C17、B18、C19、C20、D21、A25、D26、A二、填空题1、补码2、10^-138~10^1 38、15~166、A7、B6、D7、B14、B15、C22、D8、C8、D16、A24、D、A3、实4、单目运算符、自右向左5、函数调用6、65,89习题四一、单项选择题1、D2、C3、D4、A5、D6、B7、A8、C9、B10、B二、填空题1、两, ;2、5.1690003、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车4、a=98,b=765.000000,c=4321.0000005、100 25.81 1.89234、100,25.81,1.89234、100回车25.81回车1.89234回车6、0,0,37、38、scanf(“%lf %lf %lf”,&a,&b,&c);9、13 13.000000 13.00000010、c=b-a;a=b+c;习题五一、单项选择题1、B2、D3、C4、B5、B6、D7、A8、B二、填空题1、1 、02、k!=03、if(x>4||xelse printf(“error!”); 4、if(((x>=1&&x=200&&x Printf(“%d”,x);5、16、17、10! Right!8、a=09、2,110、0习题六一、单项选择题9、D1、B2、C3、C4、B5、C6、B7、C8、A二、填空题1、无穷次2、83、205、3.66、*#*#*#$7、828、d=1.0 、k++、k9、!(x习题七一、单项选择题1、B2、D3、C4、C5、A二、填空题1、1 2 4 8 16 32 64 128 256 5122、a[age]++、i=18;i3、break、i==84、a[i]>b[i]、i3、j5、b[j]=0、b[j]=a[j][k]习题八一、单项选择题1、B3、C4、A5、A9、D10、B11、A12、C13、A二、填空题1、return1、return n+sum(n-1)2、return1、n*facto(n-1)习题九一、单项选择题1、D2、C3、D4、A5、C9、B10、C11、A13、B17、C18、A19、B20、C二、填空题1、int 、return z2、*p++3、’\0’、++4、p、max*q6、A7、D6、A7、C14、C15、B6、C7、C14、A15、D8、A8、D8、C习题十一、单项选择题1、D2、D3、A4、5、B6、A7、C8、B9、D10、11、C12、D13、D14、C二、填空题1、34 122、ARRAY a[10],b[10],c[10];3、2 34、ab、cd5、(*b).day、b->day6、adghi mnohi no7、(struct node *)、!=’\n’、p=top;8、p1=p1->next9、(struct list *)、(struct list *)、return (n)习题十一一、单项选择题1、A2、A3、B4、A5、B9、A10、B11、B12、B13、C17、D二、填空题1、ASCII(文本)、二进制2、pf=fopen(“A:\zk04\data xfile.dat”,”w”);3、fputc()、fputs()、fscanf()、fread()4、(后两个空)文件结束符、非0值7、B14、C15、D8、A16、A第二篇:C语言程序设计教程课后习题参考答案《C语言程序设计教程》课后习题参考答案习题1 1. (1)编译、链接.exe (2)函数主函数(或main函数)(3)编辑编译链接2.(1)-(5):DDBBC (6)-(10):ABBBC 3.(1)答:C语言简洁、紧凑,使用方便、灵活;C语言是高级语言,同时具备了低级语言的特征;C 语言是结构化程序设计语言,具有结构化的程序控制语句;C语言有各种各样的数据类型;C语言可移植性好;生成目标代码质量高,程序执行效率高。
C语言全部章节习题集(参考答案)
第一章 C语言概述一、选择题:1、一个C程序的执行是从( A )。
A本程序的main函数开始,到main函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束2、在 C 语言中,每个语句必须以( D )结束。
A. 回车符B. 冒号C. 逗号D. 分号3、C 语言规定:在一个源程序中,main函数的位置( C )。
A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后4、一个C 语言程序是由( B )。
A. 一个主程序和若干子程序组成B. 函数组成C. 若干过程组成D. 若干子程序组成5、下列说法中错误的是( D )。
A. 主函数可以分为两个部分:主函数说明部分和主函数体B. 主函数可以调用任何非主函数的其他函数C. 任何非主函数可以调用其他任何非主函数D. 程序可以从任何非主函数开始执行6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。
A. 生成可执行目标文件B. 生成目标文件C. 输出运行结果D. 自动保存源文件二、填空题:1、C 语言只有 32 个关键字和 9 种控制语句。
2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。
3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。
4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函数 printf 完成的。
5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。
6、C 语言的标识符只能由字母、数字和下划线三种字符组成。
第三章数据类型、运算符和表达式一、选择题:1、以下选项中,不正确的 C 语言浮点型常量是( C )。
java的泛型与java的集合编程题
题目:深度探讨Java的泛型与集合编程题一、引言Java作为一种广泛使用的编程语言,其泛型与集合是非常重要的特性。
在编写Java程序时,对泛型与集合的理解和应用至关重要。
本文将深入探讨Java的泛型与集合编程题,帮助读者更深入地理解这一主题。
二、泛型的基本概念和用法1. 什么是泛型?泛型是Java语言中一种重要的特性,它允许我们在编写代码时使用参数化类型,从而提高代码的重用性和安全性。
通过泛型,我们可以在编译时检查类型安全,避免在运行时出现类型转换错误。
2. 泛型的基本用法在Java中,我们可以使用泛型来定义类、接口和方法。
定义一个泛型类可以使用以下语法:```javapublic class Box<T> {private T value;public void setValue(T value) {this.value = value;}public T getValue() {return value;}}```在上面的代码中,Box<T>就是一个泛型类,其中的T表示类型参数。
通过使用泛型,我们可以创建具有不同数据类型的Box对象,从而实现通用性和灵活性。
三、集合框架的基本概念和用法1. 什么是集合框架?集合框架是Java中用来存储和操作数据的一组接口和类。
它提供了一系列的数据结构(如List、Set、Map等)和算法。
在Java中,集合框架是非常常用的,我们几乎可以在所有的Java程序中看到它的身影。
2. 集合框架的基本用法我们可以使用集合框架来存储和操作数据。
可以使用List接口来存储一组有序的数据,使用Set接口来存储一组不重复的数据,使用Map接口来存储键值对等。
通过对集合框架的灵活运用,我们能够更加高效地处理数据。
四、深入理解泛型与集合的编程题1. 编程题1:使用泛型实现一个通用的栈要求:实现一个通用的栈类,能够存储任意类型的数据,并实现入栈、出栈等操作。
编译原理一些习题答案
编译原理⼀些习题答案第2章形式语⾔基础2.2 设有⽂法G[N]: N -> D | NDD -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9(1)G[N]定义的语⾔是什么?(2)给出句⼦0123和268的最左推导和最右推导。
解答:(1)L(G[N])={(0|1|2|3|4|5|6|7|8|9)+} 或L(G[N])={α| α为可带前导0的正整数}(2)0123的最左推导:N ? ND ? NDD ? NDDD ? DDDD ? 0DDD ? 01DD ? 012D ? 0123 0123的最右推导:N ? ND ? N3 ? ND3 N23 ND23 N123 D123 0123268的最左推导:N ? ND ? NDD ? DDD ? 2DDD ? 26D ? 268268的最右推导:N ? ND ? N8 ? ND8 ? N68 ? D68 ? 2682.4 写⼀个⽂法,使其语⾔是奇数的集合,且每个奇数不以0开头。
解答:⾸先分析题意,本题是希望构造⼀个⽂法,由它产⽣的句⼦是奇数,并且不以0开头,也就是说它的每个句⼦都是以1、3、5、7、9中的某个数结尾。
如果数字只有⼀位,则1、3、5、7、9就满⾜要求,如果有多位,则要求第1位不能是0,⽽中间有多少位,每位是什么数字(必须是数字)则没什么要求,因此,我们可以把这个⽂法分3部分来完成。
分别⽤3个⾮终结符来产⽣句⼦的第1位、中间部分和最后⼀位。
引⼊⼏个⾮终结符,其中,⼀个⽤作产⽣句⼦的开头,可以是1-9之间的数,不包括0,⼀个⽤来产⽣句⼦的结尾,为奇数,另⼀个则⽤来产⽣以⾮0整数开头后⾯跟任意多个数字的数字串,进⾏分解之后,这个⽂法就很好写了。
N -> 1 | 3 | 5 | 7 | 9 | BNB -> 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | B02.7 下⾯⽂法⽣成的语⾔是什么?G1:S->ABA->aA| εB->bc|bBc G2:S->aA|a A->aS解答:B ? bcB ? bBc? bbccB ? bBc? bbBcc ? bbbccc……A ?εA ? aA ? aA ? aA ? aaA ? aa……∴S ? AB ? a m b n c n , 其中m≥0,n≥1即L(G1)={ a m b n c n | m≥0,n≥1} S ? a S ? aA ? aaS ? aaaS ? aA ? aaS ? aaaA ?aaaaS ? aaaaa ……∴S ? a2n+1 , 其中n≥0即L(G2)={ a2n+1 | n≥0}2.11 已知⽂法G[S]: S->(AS)|(b)A->(SaA)|(a)请找出符号串(a)和(A((SaA)(b)))的短语、简单短语和句柄。
Java2实用教程(第四版)课后习题1-8章答案最终
习题一(第 1 章)一、问答题1.James Gosling2.需 3 个步骤:1) 用文本编辑器编写源文件。
2) 使用javac 编译源文件,得到字节码文件。
3) 使用解释器运行程序。
3.由类所构成,应用程序必须有一个类含有public static void main(String args[]) 方法,含有该方法的类称为应用程序的主类。
不一定,但最多有一个public 类。
4.Path 设置为:以安装的版本为例。
)ClassPath 设置为:set classpath=D:\jdk\jre\lib\;.;5. .java 和.class6. java Bird7. 独行风格(大括号独占行)和行尾风格(左大扩号在上一行行尾,右大括号独占行)二、选择题1. B。
2. D o三、阅读程序1 . ( a) o ( b)两个字节码,分别是和。
(c)得至U “ NoSuchMethodError ” ,得到“NoClassDefFoundError: Xiti/class ”,得到“您好,很高兴认识您nice to meet you”习题二(第 2 章)一、问答题1. 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。
标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。
false不是标识符。
2.关键字就是Java 语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。
不是关键字。
class implements interface enum extends abstract 。
3.boolean,char,byte,short,int ,long ,float ,double。
4. float常量必须用F或f为后缀。
double常量用D或d为后缀,但允许省略后缀。
5. —维数组名.length。
二维数组名」ength。
二、选择题1. C。
2. ADF 。
编译原理课后题答案【清华大学出版社】ch8
如果题目是 S::=L.L | L L::=LB | B B::=0 | 1 则写成: S`::=S {print(S.val);} S::=L1.L2 { S.val:=L1.val+L2.val/2L2.length ;} S::= L { S.val:=L.val; } L::=L1B { L.val:=L1.val*2+B.val; L.length:=L1.length+1; } L::=B { L.val:=B.val; L.length:=1;} B::=0 { B.val:=0; } B::=1 { B.val:=1;}
如采用 LR 分析方法,给出表达式(5*4+8)*2 的语法树并在各结点注明语义值 VAL。
答案:
计算机咨询网()陪着您
5
缄默TH浩的小屋
《编译原理》课后习题答案第八章
采用语法制导翻译思想,表达式 E 的“值”的描述如下:
产生式
语义动作
(0) S′→E
{print E.VAL}
四元式:
100 (+, a, b, t1) 101 (+, c, d, t2) 102 (*, t1, t2, t3) 103 (-, t3, /, t4) 104 (+, a, b, t5) 105 (+, t5, c, t6) 106 (-, t4, t6, t7)
树形:
计算机咨询网()陪着您
计算机咨询网()陪着您
6
缄默TH浩的小屋
《编译原理》课后习题答案第八章
第5题
令 S.val 为下面的文法由 S 生成的二进制数的值(如,对于输入 101.101,S.val=5.625); SÆL.L | L LÆLB | B BÆ0 | 1
C语言第八章习题带答案-2012.11.6更新[优秀范文五篇]
C语言第八章习题带答案-2012.11.6更新[优秀范文五篇]第一篇:C语言第八章习题带答案-2012.11.6更新练习8答案选择题1.在程序中要使用语句:printf(“%sn”, STRING);输出一个长度为5个字符的提示信息“OK!”,则应使用宏定义语句(D)。
A.#define STRING “OK!”B.#define STRING “"OK!”“C.#define STRING ”OK!“D.#define STRING ”“OK!”“2.以下正确的描述为(C)。
A.每个C语言程序必须在开头用预处理命令#includeB.预处理命令必须位于C源程序的首部C.在C语言中预处理命令都以”#“开头D.C语言的预处理命令只能实现宏定义和条件编译的功能3.C语言的编译系统中宏命令是(D)。
A.在程序运行时进行代换处理的B.在程序连接时进行处理的C.和源程序中其他C语句同时进行编译的D.在对源程序中其他成分正式编译之前进行处理的4.从下列选项中选择不会引起二义性的宏定义是(D)。
A.#define POWER(x)x*xB.#define POWER(x)(x)*(x)C.#define POWER(x)(x*x)D.#define POWER(x)((x)*(x))5.若有宏定义如下:#define X 5#define Y X+1#define Z Y*X/2则执行以下printf语句后,输出结果是(D)。
int a;a=Y;printf(”%d,“, Z);printf(”%dn“,--a);A.7,6B.12,6C.12,5D.7,56.若a、b、c、d、t均为int型变量,则执行以下程序段后结果为(C)。
#define MAX(A, B)(A)>(B)?(A):(B)#define PRINT(Y)printf(”Y=%dn", Y)……a=1;b=2;c=3;d=4;t=MAX(a+b, c+d);PRINT(t);A.Y=3B.存在语法错误 C.Y=7D.Y=0第二篇:第二章习题带答案一、单项选择题1、下列关于国内信用证的说法中,错误的是()。
[修订]java语言程序设计基础篇第八章第十题编程参考答案
[修订]java语言程序设计基础篇第八章第十题编程参考答案为二次方程式ax2+bx+c=0设计一个名为QuadraticEquation的类。
这个类包括: 代表三个系数的私有数据域a、b、c。
一个参数为a、b、c的构造方法。
a、b、c的三个get方法。
一个名为getDiscriminant()的方法返回判别式,b2-4ac。
一个名为getRoot1()和getRoot2()的方法返回等式的两个根。
这些方法只有在判别式为非负数时才有用。
如果判别式为负,方法返回0。
画出该类的UML图。
实现这个类。
编写一个测试程序,提示用户输入a、b、c的值,然后显示判别式的结果。
如果判别式为正数,显示两个根;如果判别式为0,显示一个根;否则,显示“The equation has no roots”。
代码:class QuadraticEquation{private int a,b,c;QuadraticEquation(){}public QuadraticEquation(int a,int b,int c){this.a=a;this.b=b;this.c=c;}public int getA(){return a;}public int getB(){return b;}public int getC(){return c;}public int getDiscriminant(){if(b*b-4*a*c>=0)return b*b-4*a*c;elsereturn 0;}public int getRoot1(){if(b*b-4*a*c>=0)return (int)((-b+Math.pow(b*b-4*a*c, 0.5))/(2*a)); elsereturn 0;}public int getRoot2(){if(b*b-4*a*c>=0)return (int)((-b-Math.pow(b*b-4*a*c, 0.5))/(2*a)); elsereturn 0;}}public class XiTi810 {public static void main(String[] args){System.out.println("请输入要计算的方程的系数a、b和c:");java.util.Scanner input =new java.util.Scanner(System.in);System.out.print("a=");int a=input.nextInt();System.out.print("b=");int b=input.nextInt();System.out.print("c=");int c=input.nextInt();QuadraticEquation q=new QuadraticEquation(a,b,c);q.getDiscriminant();if(q.getDiscriminant()>0)System.out.println("它们的根为:"+q.getRoot1()+"和"+q.getRoot2());else if(q.getDiscriminant()==0)System.out.println("此方程只有一个根为:"+q.getRoot1());elseSystem.out.println("方程无解");}}。
编译原理第八章习题答案
第八章习题答案2、请将算术表达式翻-(a+b)*(c+d)+(a+b+c)翻译为:(1)四元式(2)三元式(3)间接三元式答:(2)三元式(3)间接三元式间接码表:三元式:4、修改图8.5中计算声明语句中的名字的类型及相对对峙的翻译方案,以允许在一个声明中可以同时声明多个变量名。
答:翻译方案如下:P->{ offset:= 0 } DD-> D;DD->LL->id,L1 {L.type = L1.type;L.width = L1.width;enter(id,name,L.type,offset;Offset:= offset +L.width}L->:T{ L.type = T.type;L.width = T.width;}T->integer { T.type = integer; T.width:= 4 }T->real { T.type= real; T.width:= 8 }T-> array[num] of T1 { T.type:= array(num.val, T1.type);T.width:= num.val X T1.width }T->^T1 {T.type:=pointer(T1.type); T.width : = 4 }7、利用8.11的翻译方案,将下面的赋值语句翻译成三地址代码:A[i,j] = B[i,j] + C[A[k,l]]+D[i+j]答:令:域宽为wA的维数为:da1,da2, 不变部分为na, B的维数为db1,db2, 不变部分nbC的维数为dc,不变部分ncD的维数为dd,不变部分nd,t1 := i*db1t1:= t1+jt2:= B-nbt3:=w*t1t4:=t2[t3]xb = t4;t1 := k*da1t1:= t1+lt2:= A-nat3:=w*t1t4:=t2[t3]xa = t4;t1:=xa;t2:=C-nc;t3:=w*t1t4:=t2[t3]xca:=t4t1:=i+j;t2:=D-nd;t3:=w*t1;t4:=t2[t3];xd=t4;t5:=xb+xca;t6:=t5+xd;t1 := i*da1t1:= t1+jt2:= A-nat3:=w*t1t2[t3]:=t6。
C语言课后习题答案第八章
作业八:函数程序设计答案〔一〕选择题〔30分〕1.以下正确的函数定义形式是A__。
A)double fun(int x,int y)B)double fun(int x;int y)C)double fun(int x,int y);D)double fun(int x,y);2.以下正确的函数形式是D__。
A)double fun(int x,int y){ z=x+y; return z; }B)fun(int x,y){ int z; return z; }C)fun(x,y){ int x,y; double z; z=x+y; return z; }D)double fun(int x,int y){ double z; z=x+y; return z; }〔重要〕3.以下正确的说法是A__。
在C语言中A〕实参和及其对应的形参各占用独立的存储单元B〕实参和及其对应的形参共占用一个存储单元C〕只有当实参和及其对应的形参同名时才共占用存储单元D〕形参是虚拟的,不占用存储单元4.假设调用一个函数,且此函数中没有return语句,那么正确的说法是D__。
该函数A〕没有返回值B〕返回假设干个系统默认值C〕能返回一个用户所希望的函数值D〕返回一个不确定的值〔重要〕5.以下不正确的说法是B__。
C语言规定A〕实参可以是常量、变量或表达式B〕形参可以是常量、变量或表达式C〕实参可以为任意类型D〕形参应及其对应的实参类型一致6.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是B__。
A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式7.以下程序有语法性错误,有关错误原因的正确说法是C__。
main()int G=5,k;void Prt_char();k=Prt_char(G);A)语句void prt_char();有错,它是函数调用语句,不能用void说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线8.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是B__。
JavaWeb程序设计教程范立峰第8章习题答案
第8章初识Hibernate框架习题答案1.什么是ORM?答案:ORM就是对象关系映射。
其中的“O”代表的就是对象(object),“R”代表的是关系“relation”,M代表的是映射“mapping”。
其原理就是将对象与表、对象的属性与表的字段分别建立映射关系。
2.Hibernate有那些配置文件?这些配置文件都使用什么语法配置?答案:HIbernate有两个配置文件。
一个配置文件是hibernate.cfg.xml,使用XML语法来配置数据库连接等信息,或者hibernate.properties,使用‘名称’=‘值’的形式配置。
HIbernate的另一个配置文件是映射文件,用来经数据表中的字段信息映射项目中创建的持久化的属性信息。
这样才能使用HIbernate的ORM机制,操作持久化类对象属性的同时就可以对数据中的数据进行更改。
3.简述在Hibernate中使用的映射关系类型。
答案:映射关系类型如下表所示:4.Hibernate中用于开始使用Hibernate的入口配置类是什么?入口类是Configuration,该类用来读取HIbernate的配置文件并实例化SessionFactory 对象等。
该类的实例化代码如下。
使用属性文件配置HIbernate时:Configuration config=new Configuration();使用配置文件配置HIbernate时:Configuration config=new Configuration().configrue(); 5.Hibernate中的关联关系都有哪些?实体之间通过关系来相互关联,关系之间有一对一(1:1)、一对多(1:n)和多对多(n:m)的关系。
12345、删除:delete from xj_student where studentID=?;修改:update xj_student set studentName=?, birthday=? Where studentID=?;添加:insert into xj_student values(?,?,?);6、请在下面写出一个验证表单testForm的userName输入框的输入内容长度不能小于10字78逻辑思维题1、鲁道夫、菲利普、罗伯特三位青年,一个当了歌手,一个考上大学,一个加入美军陆战队,个个未来都大有作为。
java2实用教程(第三版)第八章课后习题答案(耿祥义)
第八章第1题分四个部分分别建四个Java文本(1)public class Application {public static void main(String[] args) {new MyFrame("对话框实践");}}(2)import java.awt.*;import java.awt.event.*;public class ExceptionDialog extends Dialog implements ActionListener {Button btn;public ExceptionDialog(Frame f) {super(f,"Exception!",true);btn = new Button("close");Label label = new Label("输入格式有误!",Label.CENTER);add(label,BorderLayout.CENTER);add(btn,BorderLayout.SOUTH);btn.addActionListener(this);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {setVisible(false);}});pack();setLocation(500,330);setResizable(false);}public void actionPerformed(ActionEvent e) {setVisible(false);}}(3)import java.awt.*;import java.awt.event.*;public class MyDialog extends Dialog {Button yes,no;Label label;String mess = null;public MyDialog(Frame f,boolean b) {super(f,"信息提示",b);label = new Label("您输入的数字> 1000!!!是否输入?");label.setAlignment(Label.CENTER);Container con = new Container();con.setLayout(new GridLayout(1,2));yes = new Button("OK");yes.setForeground(Color.red);no = new Button("Cancle");no.setForeground(Color.red);con.add(yes);con.add(no);add(label,BorderLayout.CENTER);add(con,BorderLayout.SOUTH);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {setVisible(false);}});pack();setResizable(false);setLocation(510,330);}public void setMess(String mess) {this.mess = mess;bel.setText("您输入的数字" + this.mess + " > 1000!!!是否输入?");}public String getMess() {return this.mess;}public Button getYes() {return this.yes;}public Button getNo() {return this.no;}public void setHide() {yes.setVisible(false);no.setVisible(false);}}(4)import java.awt.*;import java.awt.event.*;public class MyFrame extends Frame implements ActionListener { MyDialog modelDialog;ExceptionDialog exception;TextField num;TextArea dis;public MyFrame(String title) {super(title);modelDialog = new MyDialog(this,true);exception = new ExceptionDialog(this);num = new TextField(20);dis = new TextArea(10,10);dis.setEnabled(false);add(num,BorderLayout.NORTH);add(dis,BorderLayout.CENTER);num.addActionListener(this);modelDialog.getY es().addActionListener(this);modelDialog.getNo().addActionListener(this);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { System.exit(1);}});setVisible(true);setLocation(500,300);setResizable(false);pack();}public void actionPerformed(ActionEvent e) { Object obj = e.getSource();if(obj == this.num) {String str = this.num.getText();try {if(Integer.parseInt(str) > 1000) {modelDialog.setMess(str);modelDialog.setVisible(true);}else {dis.append(str + "\n");}}catch (NumberFormatException e1) {exception.setVisible(true);}}if(obj == this.modelDialog.getY es()) {dis.append(this.modelDialog.getMess() + "\n");modelDialog.setVisible(false);}else if(obj == this.modelDialog.getNo()) {modelDialog.setVisible(false);}num.setText(null);}}第八章第2题分四个部分分别建5个Java文本(1)public class Application {public static void main(String[] args) {new MyFrame("Dialog");}}(2)import java.awt.*;import java.awt.event.*;public class MyFrame extends Frame implements Info ,ActionListener { TextField num;TextArea info;String mess;InfoDialog infoDialog;ExceptionDialog exceptionDialog;public MyFrame(String s) {super(s);infoDialog = new InfoDialog(this);exceptionDialog = new ExceptionDialog(this);num = new TextField(30);info = new TextArea(10,30);info.setEnabled(false);num.addActionListener(this);add(num,BorderLayout.NORTH);add(info,BorderLayout.CENTER);addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(1);}});pack();setLocation(480,300);setVisible(true);setResizable(false);}public void actionPerformed(ActionEvent e) { mess = e.getActionCommand();if(mess == null) {exceptionDialog.setVisible(true);}try {if(Long.parseLong(mess) > 1000) {infoDialog.notifyDialog();}else {.append(this.mess + "\n");}}catch(NumberFormatException e1) {exceptionDialog.setVisible(true);}this.num.setText(null);}public String getMess() {return this.mess;}public void setInfo() {.append(this.mess + "\n");}}(3)public interface DisDialog {public void notifyDialog();}(4)public interface Info {public String getMess();public void setInfo();}(5)import java.awt.*;import java.awt.event.*;public class InfoDialog extends Dialog implements ActionListener { Label label;Button yes,no;Info info;public InfoDialog(Frame f) {super(f,"info",true); = (Info)f;yes = new Button("ok");yes.addActionListener(this);no = new Button("no");no.addActionListener(this);Container con = new Container();con.setLayout(new FlowLayout());con.add(yes);con.add(no);add(con,BorderLayout.SOUTH);label = new Label("",Label.CENTER);add(label,BorderLayout.CENTER);addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { setVisible(false);}});setSize(340,90);setLocation(500,330);setResizable(false);}public void actionPerformed(ActionEvent e) { Object obj = e.getSource();String str = info.getMess();this.validate();add(label,BorderLayout.CENTER);if(obj == yes) {info.setInfo();}setVisible(false);}public void notifyDialog() {bel.setText("您输入的数字" + info.getMess() + " > 1000!!!是否确认输入?");this.setVisible(true);}}。
C程序设计教程第二版习题答案
C程序设计教程第二版习题答案第1章:C语言概述1. 简述C语言的特点。
- C语言是一种结构化编程语言,具有高效、灵活、功能强大等特点。
它支持多种编程范式,包括过程式、面向对象和泛型编程。
2. C语言的发展历史。
- C语言由丹尼斯·里奇在20世纪70年代初期开发,最初用于UNIX操作系统的编写。
随着UNIX的流行,C语言也逐渐普及。
第2章:C语言基础1. 变量声明的规则。
- 变量声明必须指定数据类型,变量名必须以字母或下划线开头,可以包含字母、数字和下划线,但数字不能作为变量名的首位。
2. 常量的使用。
- 常量是在程序执行过程中不能被修改的值,可以用#define预处理指令定义,或者直接使用字面量。
第3章:控制语句1. if语句的使用。
- if语句用于根据条件执行不同的代码块。
基本语法为:`if (条件) { 执行代码 }`。
2. switch语句的使用。
- switch语句用于根据变量的值执行不同的代码块。
基本语法为:`switch (变量) { case 值1: 执行代码1; break; ... }`。
第4章:循环语句1. for循环的使用。
- for循环用于重复执行一段代码直到满足特定条件。
基本语法为:`for (初始化; 条件; 增量/减量) { 执行代码 }`。
2. while循环的使用。
- while循环在条件为真时重复执行代码块。
基本语法为:`while (条件) { 执行代码 }`。
第5章:函数1. 函数的定义和调用。
- 函数是一段具有特定功能的代码块,可以被重复调用。
定义函数的基本语法为:`返回类型函数名(参数列表) { 函数体 }`。
调用函数时使用:`函数名(参数)`。
2. 函数的参数传递。
- 参数传递可以是值传递或引用传递。
值传递时,函数内部对参数的修改不会影响到外部变量的值;引用传递则相反。
第6章:数组1. 一维数组的声明和使用。
- 一维数组的声明语法为:`类型数组名[大小]`。
泛型的练习——精选推荐
泛型的练习 ⽤户在设计类的时候往往会使⽤类的关联关系,例如,⼀个⼈中可以定义⼀个信息的属性,但是⼀个⼈可能有各种各样的信息(如联系⽅式、基本信息等),所以此信息属性的类型就可以通过泛型进⾏声明,然后只要设计相应的信息类即可。
简单的分析:⼀个⼈Person类,含有⼀个信息属性,但是信息的类型却有两种。
产⽣了不确定性,所以采⽤泛型。
解决之道:将Person类编写成⾃定义泛型的类,在实例化某个具体的person对象的时候,才去指定唯⼀信息的具体类型。
1package com.kj;23public class test {45public static void main(String[] args) {6 Person<Introduction> p =null ;7 p=new Person<Introduction>(new Introduction("李雷","男",24));8 System.out.println(p);9 Person<contact> p2 =null;10 p2=new Person<contact>(new contact("北京市","010********","102206"));11 System.out.println(p2);12 }13 }14class Person<T extends Info> {15private T info;16public Person(T info) {17super(); = info;19 }20public T getInfo() {21return info;22 }23public void setInfo(T info) { = info;25 }26 @Override27public String toString() {28return "Person [info=" + info + "]";29 }30 }31/*32 * 只有实现此接⼝的⼦类才是表⽰⼈的信息33*/34interface Info{35 }36/**37 * 代表着联系⽅式38 *39*/40class contact implements Info{41private String address ; // 联系地址42private String telephone ; // 联系⽅式43private String zipcode ; // 邮政编码44public String getAddress() {45return address;46 }47public void setAddress(String address) {48this.address = address;49 }50public String getTelephone() {51return telephone;52 }53public void setTelephone(String telephone) {54this.telephone = telephone;55 }56public String getZipcode() {57return zipcode;58 }59public void setZipcode(String zipcode) {60this.zipcode = zipcode;61 }62public contact(String address, String telephone, String zipcode) {63super();64this.address = address;65this.telephone = telephone;66this.zipcode = zipcode;67 }68 @Override69public String toString() {70return "contact [address=" + address + ", " +71 "telephone=" + telephone72 + ", zipcode=" + zipcode + "]";73 }747576 }77/**78 * 代表着基本信息79*/80class Introduction implements Info{81private String name ; // 姓名82private String sex ; // 性别83private int age ; // 年龄8485public Introduction(String name, String sex, int age) { 86super(); = name;88this.sex = sex;89this.age = age;90 }91public String getName() {92return name;93 }94public void setName(String name) { = name;96 }97public String getSex() {98return sex;99 }100public void setSex(String sex) {101this.sex = sex;102 }103public int getAge() {104return age;105 }106public void setAge(int age) {107this.age = age;108 }109 @Override110public String toString() {111return "Introduction [name=" + name + ", sex=" 112 + sex + ", age=" + age113 + "]";114 }115116 }。
泛型编程题
泛型编程题含解答共5道1. 泛型最大值问题:编写一个泛型函数,找到给定数组中的最大值。
解答:```javapublic <T extends Comparable<T>> T findMax(T[] array) {if (array == null || array.length == 0) {return null;}T max = array[0];for (int i = 1; i < array.length; i++) {if (array[i].compareTo(max) > 0) {max = array[i];}}return max;}```2. 泛型列表反转问题:编写一个泛型函数,将给定的列表反转。
解答:```javapublic <T> List<T> reverseList(List<T> list) {if (list == null || list.isEmpty()) {return list;}List<T> reversedList = new ArrayList<>(list.size());for (int i = list.size() - 1; i >= 0; i--) {reversedList.add(list.get(i));}return reversedList;}```3. 泛型堆栈问题:实现一个泛型堆栈类,包括压栈(push)、弹栈(pop)和获取栈顶元素(top)操作。
解答:```javaimport java.util.ArrayList;import java.util.List;public class GenericStack<T> {private List<T> stack = new ArrayList<>();public void push(T element) {stack.add(element);}public T pop() {if (isEmpty()) {throw new IllegalStateException("Stack is empty");}return stack.remove(stack.size() - 1);}public T top() {if (isEmpty()) {throw new IllegalStateException("Stack is empty");}return stack.get(stack.size() - 1);}public boolean isEmpty() {return stack.isEmpty();}}```4. 泛型映射问题:实现一个泛型映射类,支持添加键值对、根据键获取值、检查键是否存在等操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return temp;
}
char* max(char *a[], int n)
{
char* p=a[0];
for (int i=1; i<n; i++)
{
if(strcmp(p, a[i])==-1) p=a[i];
}
return p;
}
int main()
{
int a[5]={1, 9, 0, 23, -45};
float b[5]={1.1, 9.9, 0, 23.4, -45.6};
double c[5]={5.5, 9.9, 2.2, 3.3, -1.1};
char d[5]={'A', 'G', 'B', 'H', 'D'};
char* str[5]={"A", "G", "B", "H", "D"};
#include <iostream>
#include <string>
using namespace std;
template <typename T, int size>
T max(T a[])
{
T temp=a[0];
for (int i=1; i<size; i++)
{
if (temp<a[i]) temp=a[i];
1.设计一个函数模板,实现两数的交换,并用int、float、double、char类型的数据进行测试。
#include <iostream>
#include <string>
using namespace std;
template <typename T>
void change(T &x, T &y)
错1:public:
A(T a, b)//A(T a,T b)
{x=a,y=b;s=x+y;}
错2:
int main()
{A add(10,100);//A <int>add(10,100);
add.show();
return 0;
}
四、看程序写结果(共12分,每题4分)
1.
2.
3.
五、编程题(22分)
《面向对象程序设计》习题
第
一、选择题(共40分,每题2分)
1
2
3
4
5
6
7
8
9
10
D
C
B
C
C
D
D
A
D
C
11
12
13
14
15
16
17
18
19
20
B
D
D
B
A
C
A
D
B
A
二、填空题(共20分,每空2分)
1.逻辑数据类型
2.函数类
3.函数模板类模板
4.函数类型形参类型
5.2
6.尖括号
三、下列程序有2个错,找出并修改(共6分)
{
T temp;
temp=x; x=y; y=temp;}Biblioteka int main(){
int a=12, b=34;
float c=1.1, d=2.2;
double e=1.23456789, f=2.23456789;
char u='A', v='B';
cout<<"交换前:a="<<a<<" b="<<b<<endl;
change(e, f);
cout<<"交换后:e="<<e<<" f="<<f<<endl;
cout<<"交换前:u="<<u<<" v="<<v<<endl;
change(u, v);
cout<<"交换后:u="<<u<<" v="<<v<<endl;
return 0;
}
2.设计一个函数模板,实现从int、float、double、char类型的数值找出最大值元素。提示:可用类型参数传递数值、用非类型参数传递数值大小,为了找出char *类型数组中的最大值元素,需要对该类型进行重载。
change(a, b);
cout<<"交换后:a="<<a<<" b="<<b<<endl;
cout<<"交换前:c="<<c<<" d="<<d<<endl;
change(c, d);
cout<<"交换后:c="<<c<<" d="<<d<<endl;
cout<<"交换前:e="<<e<<" f="<<f<<endl;
cout<<"str数组中的最大元素为:"<<max(str, 5)<<endl;
return 0;
}
cout<<"a数组中的最大元素为:"<<max<int, 5>(a)<<endl;
cout<<"b数组中的最大元素为:"<<max<float, 5>(b)<<endl;
cout<<"b数组中的最大元素为:"<<max<double, 5>(c)<<endl;
cout<<"b数组中的最大元素为:"<<max<char, 5>(d)<<endl;