c++语言程序设计教程(第二版)习题解答 沈显军 杨进才 张勇

c++语言程序设计教程(第二版)习题解答 沈显军 杨进才 张勇
c++语言程序设计教程(第二版)习题解答 沈显军 杨进才 张勇

1.1习题1解答

1.

(1)机器语言是计算机直接理解执行的语言,由一系列(二进制)指令组成,其助符构成了汇编语言;接近人的自然语言习惯的程序设计语言为高级语言。

(2)结构化程序设计方法主要内容有:自顶向下,逐步求精;面向对象方法将现实世界中的客观事物描述成具有属性和行为的对象,抽象出共同属性和行为,形成类。

(3)C++程序开发通常要经过5个阶段,包括:编辑,编译,连接,运行,调试。首先是编辑阶段,任务是编辑源程序,C++源程序文件通常带有.cpp扩展名。接着,使用编译器对源程序进行编译,将源程序翻译为机器语言代码(目标代码),过程分为词法分析、语法分析、代码生成3个步骤。

在此之前,预编译器会自动执行源程序中的预处理指令,完成将其他源程序文件包括到要编译的文件中,以及执行各种文字替换等。

连接器的功能就是将目标代码同缺失函数的代码连接起来,将这个“漏洞”补上,生成可执行文件。程序运行时,可执行文件由操作系统装入内存,然后CPU从内存中取出程序执行。若程序运行进程中出现了错误,还在需要对程序进行调试。

(4)对象与对象之间通过消息进行相互通信。

(5)类是具有相同属性和行为的一组对象的抽象;任何一个对象都是某个类的一个实例。

(6)多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。(7)面向对象的软件开发过程主要包括面向对象的方法分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的维护。

(8)泛型程序设计是指在程序设计时,将数据类型参数化,编写具有通用性和可重用的程序。

(9)# include 是一条预处理指令(语句),在编译(或预处理)时由编译器(或预编译器)执行,其功能是将iostream文件包含(复制)到指令处。

(10)C++中使用cin作为标准输入流对象,通常代表键盘,与提取操作符>>连用;使用cout作为标准输出流对象,通常代表显示设备,与<<连用。

2.

(1)叙述机器语言、汇编语言、高级语言的特点。

机器语言是计算机直接执行的语言,由二进制的0和1构成的一系列指令组成;

汇编语言是机器语言的助记符;

高级语言是接近人的自然语言习惯的编程语言,通过编译变成机器语言。

(2)结构化的语言与面向对象的语言是截然分开的吗?

不是截然分开的,面向对象的程序设计中也包含过程,含有结构化的思想。

(3)C编写的程序不加修改就可以在C++编译器中编译。

(5)C++程序通过编译变成带扩展名.obj的目标文件;再通过连接变成带扩展名.exe的可执行文件。

(6)如果要求不使用include包含头文件,有什么办法使程序正常编译运行?

在相应的文件夹(子目录)中,找到需要包含的头文件,将头文件复制到包含处。

3.

(2)C++语言程序能够在不同操作系统下编译、运行,说明C++具有良好的移植性。(可以说C++语言完全兼容C语言,但是在这不能说C++语言程序能兼容不同的操作系统;对于计算机硬件,一般使用“兼容”一词,对于程序使用“移植”)。(3)#include语句在程序运行前就执行了。

(4)C++程序运行时总是起始于main( );

(5)用C++写程序时一个语句可分几行写。

(6)面向对象编程方法有:对象、继承、类等。

1.2习题2解答

1.

(1)C++的基本数据类型可分为5大类:逻辑型(或布尔型)、字符型、整形、实型、空值型。分别用关键字bool,char,int,float/double,void 定义。长度分别为1,1,4,4/8,不定字节。整型、字符型的默认符号修饰为signed 。

(2)十进制数值、八进制数值、十六进制数值的前缀分别为1~9, 0, 0x(或0X)。

(3)一个整数值的数据类型为int ,一个带小数点的数据类型为double 。

(4)C++预定义的常用转义序中,在输出流中用于换行、空格的转义序列分别为\n,\t 。

(5)布尔型数值只有两个;true, false 。在C++的算术运算式中,分别当作1,0。

(6)字符由单引号’’括起来,字符串由双引号“”括起来。字符只能有1个字符字符串可以有多个字符。空串的表示方法为“\0”(或“ ”)。

(7)标识符以英文字母,下划线开头。

(8)定义变量的同时赋初值的方法有赋值运算符=,括号。定义常变量初值的方法有赋值运算符=,括号。

(9)关系运算符操作数的类型可以是任何基本数据类型,对其中的实数类型不能进行直接比较(if(a

(-10)&&与||表达式按从左到右的顺序进行计算,以&&连接的表达式,如果左边的计算结果为false(或0),右边的计算不需要进行,就能得到整个逻辑表达式的结果:false ;以||连接的表达式,如果左边的计算结果为true(或非0),就能得到整个逻辑表达式的结果:true 。

(11)>>运算符将一个数右移n 位,相当于将该数除以2n ,<<运算符将一个数左移n 位,相当于将该数乘以2N

(12)所有含赋值运算的运算符左边要求是左值。

(13)前置++、――的优先级高于后置++、――。

(14)按操作数数目分,运算符的优先级从高到低排列为单目、双目、三目,按运算符的性分,优先级从高到低排列为算术、移位、关系、按位、逻辑。

(15)在表达式中会产生副作用的运算符有++、- -、各类赋值。

2.

1.3 习题3解答

1.

(1)if 语句中的表达式可以是任意表达式(关系表达式、逻辑表达式、算术表达式、常量)。

1.4 习题4解答

1.

(1)一个C++程序就是由一个个函数组成的即使是最简单的程序也有一个main( )函数。

(2)函数执行过程中通过return 语句将函数值返回,当一个函数不需要返回值,此时需要使用void 作为类型名。

(3)在C++中,如果函数定义在后,调用在先,需要进行函数原型声明,告诉编译器函数的(返回)类型,函数名,形式参数。其格式和定义函数时的函数头的形式基本相同,它必须以分号 ;结尾。

(4)函数调过程的3个步骤为:函数调用(或参数传递),函数体执行,返回。

(5)函数参数传递过程的实质是将实参值通过堆栈一一传送给实参。(实参传给实叁?)

(6)递归程序分两个阶段执行调用,回代。

(7)带inline 关键字定义的函数为内联函数,在编译时将函数体展开到所有调用处。内联函数的好处是节省执行时间开销。

(8)函数名相同,但对应形参表不同的一组函数称为重载函数,参数表不同是指参数个数、类型不同。

(9)确定对重载函数中函数进行绑定的优先次序为精确匹配,对实参的类型向高类型转换后的匹配,实参类型向低类型及相容类型转换后的匹配。

(10)当既存在重载函数、又有函数模板,函数调用优先绑定重载函数,只有不能精确匹配重载函数时,才实例化类模板。

(11)内联函数的展开、重载函数的绑定、类模板的实例化与绑定均在编译阶段进行。

(12)在C++中,函数不允许嵌套定义,允许嵌套调用。

2.

(1)void fun(void)的定义是正确的,double fun(int x;int y) 和int fun();和double fun(int x,y) 这都是不正确的(定义是不能以;结尾的)。

(2)函数int fun(int x, int y)的声明形式可以是int fun(int, int)和int fun(int y,int x);和int fun(int i,int j);(int fun(int x, int y)是不正确的因为函数的声明必须以;结尾)。

(3)C++语言中规定函数的返回值的类型是由定义该函数时所指定的数据类型所决定。

(5)在C++中默认的形参值应该先从右边的形参开始向左边依次设置。

(6)重载函数参数个数相同时,参数类型必须不同。

(7)系统在调用重载函数时,依据的是函数名称、实参个数、实参类型。

(8)

(9)为了取代C中带参数的宏,在C++ 中使用内联函数。

(10)函数模板定义的头部template

(11)若fun(8,3.1)调用的可以是fun(double, double)――(当没有精确匹配时,优先进行向高类型转换后的匹配)(12)若fun(8,3.1)调用的可以是template fun (T1,T2)

1.5习题5解答

1.

(-1)enum weekday {sun,mon,tue,wed=d,thu,fri,sat};

weekday workday =mon;

cout<

输出:5(怎么加的?)

(2)在C++中,引用数组元素时,其数组下标的数据类型允许是整形常量、整形表达式等非浮点型表达式。(整型表达式实际上包含了整型常量)

(3)设有数组定义:char array[]=”China”; 则数组array所占的空间为6个字节(’\0’)。

(4)若:int a[][3] = {1,2,3,4,5,6,7};则a 数组高维的大小为:3。

(-6)若二维数组a有m 列,则在a[i][j]前的元素个数为(i*m+j);

1.6习题六解答

1

(1)从变量的定义位置分,可分为全局变量与局部变量。其中,局部变量定义在函数或

复合语句中,供函数或复合语句中使用。

(2)变量的存储类型分为auto,extern,register,static。当声明一个静态(static)变量,它既

具有局部变量的性质,又具有全局变量的性质。

(3)C++程序的内存分为4个区:全局数据区,代码区,栈区,堆区。全局变量,静态

变量,字符串常量存放在全局数据区,所有在函数和代码存放在代码区,为运行函

数而分配的函数参数,局部变量,返回地址存放在栈区。动态分配的内存在堆区。

(4)全局变量,静态变量具有静态生存期;局部变量生存期为动态。

(5)函数原型中形参标识符的作用域为为函数原型,函数的形参与函数体作用域为块作

用域;函数,全局变量与常量有文件作用域。

(6)C++源程序中以#开头,以换行符结尾的行称为预处理命令。预处理命令编译前由

预处理器执行。

(7)可以通过3种方法使用名字空间,个别使用声明方式,全局声明方式,全局声明个

别成员。

2.

(1)在C++中,函数默认的存储类别为:auto。

(2)函数的形式参数是局部变量,在一个函数体内定义的变量只在本函数范围内有效,在函数的复合语句中定义的变量在此复合语句中有效。

(3)# define PI 3.14 预处理命令必须以#开头,凡是以#开头的都是预处理命令行,在程序执行前执行预处理命令。

(4)动态分配的内存要用delete释放,局部auto变量分配的内存在函数调用结束时释放,全局变量的内存在程序结束时释放。

1.7习题7解答

1.

(1)类的私有成员只能被该类的成员函数或友元函数访问。

(2)类的数据成员不能在定义的时候初始化,而应该通过构造函数初始化。

(3)类成员默认的访问方式是private.

(4)类的公有成员函数的集合是该类给外界提供的接口。

(5)类的公有成员可以被类作用域内的任何对象访问。

(6)为了能够访问到某个类的私有成员,必须在该类中声明该类的友元。

(7)类的静态成员为该类的所有对象所共享。

(8)每个对象都有一个指向自身的指针,称为this指针,通过使用它来确定其自身的地址。(9)运算符new自动建立一个大小合适的对象并返回一个具有正确类型的指针。

(-10)C++禁止非const成员函数访问const对象。

(-11)定义类的动态对象数组时,系统只能够自调用该类的构造函数对其进行初始化。(――12)C++中语句const char* const p=”hello”;所定义的指针p和它所指的内容都不能被以改变。

(――13)假定AB为一个类,则语句AB(AB& x);为该类拷贝构造函数原型说明。

(14)在C++中访问一个对象的成员所用的运算符是.,访问一个指针所指向的对象的成员所用的运算符是->。

(15)析构函数在对象的生存期结束时被自动调用,全局对象和静态对象的析构函数在程序运行结束时调用。

(16)设p是指向一个类的动态对象的指针变量,则执行delete P;语句时,将自动调用该类的析构函数。

2.

(1)数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是类。

(2)类的实例化就是创建类的对象。

(-3)已知p是一个指向类Sample数据成员m的指针,s是类Sample的一个对象。如果要给m赋值为5:s.*p=5;

(4)类与对象的关系和数据类型与变量的关系是相似的,一个对象只能属于一个具体的类。(5)封装要求对象就具有明确的功能,它使得一个对象可以像一个部件一样用在各种程序中。

(6)内联函数是在编译时(而不是运行时)将该函数的目标代码插入到每一个调用该函数的地方。

(7)类中的函数成员可以在类体中定义,也可以在类体之外定义。

(8)C++中的对象并不是C语言中的结构体变量,它是一个状态和操作(或方法)的封装体,对象之间的信息传递是通过消息进行的。

(9)在建立类的对象时只为每个对象分配用于保存数据成员的内存

3.

(1)类和数据类型有何关联?

类相当于一种包含函数的自定义数据类型,它不占内存空间,是一个抽象的“虚”体,使用已定义的类建立对象就像用数据类型定义变量一样。对象建立后,对象占据内存,变成了一个“实”体。类与对象的关系就像数据类型与变量的的关系一样。其实,一个变量就是一个简单的不含成员函数的数据对象。

(2)类和对象的内存分配关系?

为节省内存,编译器在创建对象时,只为各对象分配用于保存各对象数据成员初始化的值,并不为各对象的成员函数分配单独的内存空间,而是共享类的成员函数定义,即类中成员函数的定义为该类的所有对象所共享,这是C++编译器创建对象的一种方法,实际应用中,我们仍将对象理解为由数据成员和函数成员两部分组成。

(3)什么是浅拷贝?什么是深拷贝?二者有何异同?

构造函数用于建立对象时给对象赋初值以初始化新建立的对象。如果有一个现存的对象,在建立新对象时希望利用现存对象作为新对象的初值,即用一个已存在的对象去初始化一个新建立的对象。C++提供的拷贝构造函数用于在建立新对象时将已存在的对象的数据成员值复制给新,以初始化新对象。拷贝构造函数在用类的一个对象去初始化该类的另一个对象时调用,以下3种情况相当于用一个已存在的对象去初始化新建立的对象,因此,调用拷贝构造函数:

①当用类的一个对象去初始化该类的另一个对象时。

②如果函数的形参是类的对象,调用函数时,将对象作为函数实参传递给函数的形

参时。

③如果函数的返回值是类的对象,函数执行完成,将返回值返回时。

原因在于默认的拷贝构造函数实现的只能是浅拷贝,即直接将原对象的数据成员值依次复制给新对象中对应的数据成员,并没有为新对象另外分配内存资源。这样,如果对象的数据成员是指针,两个指针对象实际上指向的是同一块内存空间。

当类的数据成员中有指针类型时,我们就必须定义一个特定的拷贝构造函数,该拷贝构造函数不仅可以实现原对象和新对象之间的数据成员的复制,而且可以为新的对象分配单独的内存资源,这就是深拷贝构造函数。

(4)什么是this指针?它的作用是什么?

一个类的成员函数中,有时希望引用调用它的对象,对此,C++采用隐含的this指针来实现。this指针是一个系统预定义的特殊指针,指向当前对象,表示当前对象的地址。系统利用this指针明确指出成员函数当前操作的数据成员所属的对象。实际上,当一个对象调用其成员函数时,编译器先将该对象的地址赋给this指针,然后调用成员函数,这样成员函数对对象的数据成员进行操作时,就隐含使用了this指针。

一般而言,通常不直接使用this指针来引用对象的成员,但在某些少数情况下,可以使用this指针,如重载某些运算符以实现对象的连续赋值等。

This指针不是调用对象的名称,而是指向调用对象的指针的名称。This的值不能改变,它总是指向当前调用对象。

(5)C++中静态成员有何作用?它有何特点?

C++提供了静态成员,用以解决同一个类的不同对象之间数据成员和函数的共享问

题。

静态成员的特点是:不管这个类创建了多少个对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象所共享。

面向对象方法中还有类属性(class attribute)的概念,类属性是描述类的所有对象的共同特征的一个数据项,对于任何对象实像实例,它的属性值是相同的,C++通过静态数据

成员来实现类属性。

(6)友元关联有何性质?

①友元关联是不能传递的,不能被继承。如B类是A类的友元,C类是B类的友元,

C类和A类之间如果没有声明,就没有任何友元关系,不能进行数据共享。

②友元关系是单向的,不具有交换性,如果声明B类是A类的友元,B类的成员函数

就可以访问A类的私有和保护数据,但A类的成员函数却不能访问B类的私有和保护数据。

(7)在C++程序设计中,友元关系的优点和缺点是什么?

友元概念的引入,提高了数据的共享性,加强了函数与函数之间、类与类之间的相互联系,大大提高了程序的效率,这是友元的优点,但友元也破坏了数据隐蔽和数据封装,导

致程序的可维护性变差,给程序的重用和扩充埋下了深深的隐患,这是友元的缺点。

(8)如何实现不同对象的内存空间的分配和释放?

当类被实例化成对象后,不同类别的对象占据不同类型的内存,其规律与普通变量相同:

①类的全局对象占有数据段的内存。

②类的局部对象内存分配在栈中。

③函数调用时为实参建立的临时对象内存分配在栈中。

④使用动态内存分配语句new建立的动态对象,内存在堆中分配。

虽然类(对象)是由数据成员与成员函数组成。但是,程序运行时,系统只为各对象的数据成员分配单独内存空间,而该类的所有对象则共享类的成员函数定义以及为成员函数分

配的空间。对象的内存空间分配有下列规则:

①对象的数据成员与成员函数占据不同的内存空间,数据成员的内存空间与对象的

存储类别相关,成员函数的内存空间在代码段中。

②一个类所有对象的数据成员拥有各自的内存空间。

③一个类所有对象的成员函数为该类的所有对象共享,在内存中,只有一个副本随

着对象的生命周期的结束,对象所占的空间就会释放,各类对象内存空间释放时

间与方法如下:

a.全局对象的数据成员占有的内存空间在程序结束时释放。

b.局部对象与实参对象数据成员的内存空间在函数调用结束时释放。

c.动态对象数据成员的内存空间要使用delete语句释放。

d.对象的成员函数的内存空间在该类的所有对象生命周期结束时自动释放。

1.8习题8解答1.

(1)C++程序设计的关键之一是利用继承实现软件重用,有效地缩短程序的开发时间。

(2)基类的对象可以作为派生类的对象使用,这称为类型兼容(或赋值兼容)。

(3)在C++中,三种派生方式的说明符号为public, private,protected,如果不加说明,则默认的派生方式为private。

(4)当私有派生时,基类的的公有成员成为派生类的私有成员;保护成员成为派生类的私有成员;私有成员成为派生类的不可访问成员。

(5)相互关联的各个类之间的关系主要分为组成关联和继承关联。

(6)在派生类中不能直接访问基类的私有成员否则破坏了基类的封装性。

(-7)保护成员具有双重角色,对派生类的成员函数而言,它是公有成员,但对所在类之外定义的其它函数而言则是私有成员。

(-8)多继承时,多个基类中的同名的成员在派生类中由于标识符不唯一而出现二义性。在派生类中采用成员名限定或重定义具有二义性的成员来消除该问题。

(9)C++提供的多继承机制允许一个派生类继承多个基类。

2.

(1)一个派生类可以作为另外一个派生类的基类;派生类至少有一个基类;派生类的成员除了它自己的成员外,还包含了它的基类的成员。

(2)在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则是完全相同的。

(3)友元关系是不能继承的。

(4)派生类一般都是公有派生;对基类成员的访问必须是无二义性的;赋值兼容规则也是适用于多重继承的场合。(5)基类的保护成员在公有派生中仍然是保护的;基类的保护成员在私有派生中却是私有的;对基类成员的访问必须是无二义性的。

(6)在公有派生的情况下,派生类中定义的成员函数只能访问原基类中的公有成员和保护成员。

(7)每个派生类的构造函数都要为虚基类构造函数提供实参;多继承时有可能出现对基类成员访问的二义性问题;建立派生类对象时,虚基类数的构造函数会首先被调用。

(8)在一个派生类对象结束其生命周期时先调用基类的析构函数后调用派生类的析构函数。

(9)当保护继承时,基类的公有成员和保护成员在派生类中成为保护成员,不能通过派生类的对象来直接访问。(10)若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的私有成员。

(11)设置虚基类的目的是消除二义性。

(12)继承具有传递性,即当基类本身也是某个类的派生类时,底层的派生类也会自动继承间接基类的成员。(13)在派生类构造函数的初始化列表中不能包含派生类中一般数据成员的初始化。

(14)在公有派生情况下,派生类的对象可以赋给基类的对象;派生类的对象可以初始化基类的引用;派生类的对象的地址可以赋给指向基类的指针。

3.

(1)派生类如何实现对基类私有成员的访问?

无论使用哪一种继承方式,基类的私有成员都不允许外部函数直接访问,也不允许派生的成员函数直接访问,但是可以通过基类的公有成员函数间接访问该类的私有成员。

(2)什么是赋值兼容?它会带来什么问题?

类型兼容是指在公有派生的情况下,一个派生类对象可以作为基类的对象来使用。类型兼容又称为类型赋值值兼容或类型适应。

在C++中,类型兼容主要指以下3种情况:

①派生类对象可以赋值给基类对象;

②派生类对象可以初始化基类的引用;

③派生类对象的地址可以赋给指向基类的指针;

由于派生类对象中包含基类子对象,所以这种引用方式是安全的,但是这种方法只能引用从基类继承的

成员。如果试图通过基类指针引用那些只有在派生类中才有的成员,编译器将会报告语法错误。

(3)多重继承时,构造函数和析构函数的执行顺序是如何实现的?

多得继承时,构造函数的执行顺序是:先执行基类的构造函数,再执行对象成员的构造函数,最后执行派生类的构造函数。

在多个基类之间则严格按照派生类声明时从左到右的顺序来执行各基类的构造函数,而析构函数的执行顺序则正好与构造函数的执行顺序相反。

(4)继承与组合之间的区别和联系是什么?

继承描述的是一般类与特殊类的关系,类与类之间体现的是”is a kind of”,即如果在逻辑上A是B的一种,允

许A继承B的功能和属性。例如汽车(automobile)是交通工具(vehicle)的一种,小汽车(car)是汽车的一种。那

么类automobile可以从类vehicle派生,类car 可以从类automobile派生。

组合描述的是整体与部分的关系,类与类之间体现的是”is a part of ”,如果在逻辑上A是B的一部分,则允许

A和其他数据成员组合为B。例如:发动机、车轮、电池、车门、方向盘、底盘都是小汽车的一部分,它们组合成汽车,而不能说汽车是发动机的一种。

在C++中,类的继承与类的组合很相似,继承和组合既有区别,也有联系,主要表现在描述的关系不同。某些

比较复杂的类,既需要使用继承,也需要使用组合,二者一起使用。

在某些情况下,继承与组合的实现还可以互换。在多继承时,一个派生类有多个直接基类,派生类实际上是所

有基类属性和行为的组合。派生类是对基类的扩充,派生类的成员一部分是从基类中来,因此派生类组合了基类。既

然这样,派生类也可以通过组合类实现。什么时候用继承,什么时候使用组合,要根据问题中类与类之间的具体关系,

顺其自然,权衡考虑。

(5)什么是虚基类?它有什么作用?

在多继承中,当派生类的部分或全部直接基类又是从另一个共同基类派生而来时,这些直接基类中从上一级共

同基类继承来的成员就拥有相同的名称。在派生类的对象中,同名数据成员在内存中同时拥有多个副本,同一个成员

函数会有多个映射,出现二义性,因此,C++将共同基类设置为虚基类。虚基类使得从不同的路径继承过来的同名数

据成员在内存中只有一个副本,同一个函数也只有一个映射。这样不公解决了二义性的问题,也节省了内存,避免了

数据不一致的问题。

1.9习题9解答

1.

(1)将一个函数调用链接上相应函数体的代码,这一过程称为联编(绑定)。

(2)C++支持两种多态性:静态多态性和动态多态性。

(3)在编译时就确定的函数调用称为静态联编,它通过使用重载函数实现。

(4)在运行时才确定的函数调用称为动态联编,它通过继承和虚函数来实现。

(5)虚函数的声明方法是在函数原型前加上关键字virtual。

(6)C++的静态多态性是通过重载函数实现的。

(7)C++的动态多态性是通过虚函数实现的。

(8)当通过基类指针使用虚函数时,C++会在与对象关联的派生类中正确地选择重定义的函数。

(9)如果一个类包含一个或多个纯虚函数,则该称为抽象类。

(10)若以非成员函数形式,为类Bounce重载!运算符,其操作结果为bool型数据,则该运算符重载函数的原型是:friend bool operate ! (Bounce);

2.

(1)在C++中::运算符不能被重载。

(2)运算符重载不能改变运算数的个数、优先级、结合性和语法结构。

(3)如果表达式++i*k中的++和*都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为operator*(operator++(i),k).。

(4)5.0+2.0和2+5两个表达式中的+的意义不相同。

(5)有的运算符只能作为成员函数重载。

(6)已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;。

这是运算符-的重载运算符函数;这是一个成员函数;这个函数不改变类的任何数据成员的值。

(7)在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。

Operator+有一个参数,operator*有两个参数;

(8)在C++中,对象之间的相互通信通过调用成员函数来实现。

(9)Franction operator +(Franction,Franction); Franction &operator =(Franction&,Franction); Franction &operator +=(Franction&, Franction)以上是重载为非成员函数的运算符函数原型。

(10)当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中都是虚函数。

(11)纯虚函数是一个在基类中说明的虚函数,它在该基类中没有定义,但要求在任何派生类都必须定义自己的版本。(12)Virtual void vf()=0; 这个基类中的成员函数表示纯虚函数。

(13)如果一个类至少有一个纯虚函数,那么就称该类为抽象类。

(14)纯虚函数是一种特殊的虚函数,它没有具体的定义;抽象类是指具有纯虚函数的类;抽象类只能作为基类来使用,其纯虚函数的定义同派生类给出。

(15)抽象类的特性――不能定义其对象。

(16)抽象类至少应该含有一个纯虚函数。

(17)类B是类A的公有派生类,类A和类B中都定义了虚函数fun(), p是一个指向类A对象的指针,则p->A:::func()将调用类A中的函数func()。

(18)在C++中,用于实现运行时多态性的是虚函数。

(19)Class A{

Public:

Virtual void func1(){}

void func2() {}

};

Class B: public A{

Public:

V oid func1(){cout<<”class B func1”<

Virtual void func2() {cout<<”class B func2”<

};

以上代码中B::func1是虚函数,而A::func2不是虚函数。

(20)抽象类中的成员函数都是虚函数。

(21)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类。

1.10习题10解答

1.

(1)模板是面向对象技术提高软件开发效率的重要手段,是C++语言的重要特征。

(2)类模板是能根据不同参数建立不同类型成员的类。

(3)STL中体现了泛型化程序设计的相思,它提倡使用现有的模板程序代码开发应用程序,是一种代码重用技术。(4)STL(Standard Template Library)是C++提供的标准模板库,它可以实现高效的泛型程序设计。

(5)STL容器包括顺序容器和关联容器利用容器适配器可以将顺序容器转换为新的容器。

(6)顺序容器(sequence container)以逻辑线性排列方式存储一个元素序列,在容器类型中的对象在逻辑上跑旱船认为是在连续的存储空间中存储的。

(7)关联容器(associate container)中的数据元素不存储在顺序的线性数据结构中,它们提供了一个关键字(key)到值的关联映射。

(8)容器适配器就是将某个底层顺序容器转换为另一种容器。即以顺序容器作为数据存储结构,交将其转换为一种某种特定操作特性的新容器。

(9)在STL中,迭代器如同一个特殊的指针(用以指向容器中某个位置的数据元素)。

(10)在STL中函数对象在STL中被广泛用作算法中子操作的参数,使算法变得更加通用。

2.

(1)类模板的使用实际上是将类模板实例化成一个类。

(2)类模板的模板参数能作为数据成员的类型;可作为成员函数的返回类型;可作为成员函数的参数类型。

(3)类模板的实例化在编译时进行。

(4)类模板的参数可以有多个。

(5)类模板实例化时的实参值可以是0个。当类模板的模板参数均给出了初值时,类模板实例化时可以没有实例。

(6)类模板的定义:template

(7)类模板:

Template

Class Tclass{…}

正确的实例化方式为:Tclass C!;

(11)在调用模板函数时模板实参的使用:对于常规参数所对应的模板实参,任何情况下都不能省略。

1.11习题11解答

1.

(1)标准输入流对象为cin,与>>(提取操作符)连用,用于输入;cout为标准输出流对象,与<<(插入操作符)连用,用于输出。

(2)用标准输入流对象cin与提取操作>>连用进行输入时,将空格与换行当作分隔符,使用getline()成员函数进行输入时可以指定输入分隔符。

(3)头文件iostream中定义了4个标准流对象cin,cout,cerr,clog。

(4)每一个输入/输出流对象都维护一个格式状态字,用它表示汉对象当前的格式状态并控制流的格式。C++提供了使用操纵符与格式状态字,来控制流的格式的方法。

(5)格式控制的成员函数通过流对象调用;操纵符直接用在流中,但使用函数形式的操纵符要包含iomanip头文件。(6)在ios类中,除了提供控制数据流格式标志、操纵符、成员函数,还提供了流的错误侦测函数与错误状态位,用于标识流的状态,常用的错误侦测函数有good(), eof(), fail(), bad()对应的错误状态位为goodbit, eof, bit, failbit, badbit。

(7)文件输入是指从文件向内读入数据;文件输出则指从内存向文件输出数据。文件的输入输出首先要建立输入文件流,与打开的文件连接;然后从文件流中读入数据到内存;最后关闭文件流。在打开文件、对文件读写时要使用是否成功的判断来保证文件操作的正确。

(8)文本文件是存储ASSCII码字符的文件,文本文件的输入可用>>(提取操作符)从输入文件流中提取字符实现。文本文件的输出可用<<(插入操作符)将字符插入到输出文件流来实现。

(9)二进制文件是指含ASCII码字符外的数据的文件。二进制文件的输入输出分别采用read()、write()成员函数,这两个成员函数第一个参数的类型分别为char *, const char *, 如果实参类型不符,分别采用reinterpret_cast, reinterpret_cast进行转换。

(10)设定、返回文件读指针位置的函数分别为seekg(),tellg(); 设定、返回文件写指针位置的函数分别为seekp(), tellp()。

2.

(1)要进行文件的输出,除了包含头文件iostream外,还要包含fstream头文件。

(3)char *str; cin>>str; cout<

1.12习题12解答

1.

(1) s0是一个string类串,定义串s1的方法有:string s1(s0,0,3); 、string s1(“ABC”,0,3); 、string s1=”ABC”; 、string s1(3,’A’);

(2) 若char *s0=”12345”, 则有:string s1=s0; string s1(s0); string s1(s0,0,3);

(3) 求string类串S长度的表达式为:S.length();

(4) S为string类对象,则S.size(); sizeod(S); S.length();的编译不会出错。

(5) S、T为string类对象,则S=T; S[1]=T[1];S+=T;的编译不会出错。

(6) string s=(“ABCDEF”);char *q =”123456”;string::iterator p=s.begin();则有:p=q; *(p+1)=*(q+1); q[1]=p[1];

1.13 习题13解答

1.

(1)运行错属于异常;硬件故障也可当异常抛出;只要是编程者认为是异常的都可以当异常抛出;

(2)throw语句必须在try语句块中直接运行或通过调用函数运行;一个程序中可以有try 语句而没有throw语句;throw 语句抛出的异常可以不被捕获。

(3)函数声明float fun(int a, int b) throw(),表明函数不抛出任何类型异常。

(4)catch(….)语句可捕获所有类型的异常;一个try语句可以有多个catch()语句;程序中try语句与catch语句是一个整体,缺一不可。

(5)若定义int a[2][3],那么a[2][3]=3; 数组下标越界了但不会引发异常。

教材第二章习题解答

第二章原子结构和元素周期律习题解答 1.指出下列各原子轨道相应的主量子数n及角量子数l的数值是多少?轨道数分别是多少? 2p 3d 4s 4f 5s 【解答】 2p 主量子数2,角量子数1,轨道数3 3d 主量子数3,角量子数2,轨道数5 4s 主量子数4,角量子数0,轨道数1 4f 主量子数4,角量子数3,轨道数7 5s 主量子数5,角量子数0,轨道数1 2.当主量子数n=4时,可能有多少条原子轨道?分别用Ψ n,l,m 表示出来。电子可能处于多少种运动状态?(考虑自旋在内)【解答】当n=4时,可能有n2=16条原子轨道。 n l M 4 0 1 2 3 0,±1 0,±1,±2 0,±1,±2,±3 Ψ4,0,0,Ψ4,1,0,Ψ4,1,1,Ψ4,1,-1,Ψ4,2,0,Ψ4,2,1,Ψ4,2,-1,Ψ4,2,2,Ψ4,2,-2,Ψ4,3,0,Ψ4,3,1,Ψ4,3,-1,Ψ4,3,2,Ψ4,3,-2,Ψ4,3,3,Ψ4,3,-3 每条轨道上可以容纳两个自旋相反的电子,16条原子轨道,电子可能处于32种运动状态。 3.将下列轨道上的电子填上允许的量子数。 (1)n=,l=2,m=0,m s =±1/2 (2)n=2,l= ,m=0,m s =±1/2 (3)n=4,l=2,m= ,m s =-1/2

(4)n=3,l=2,m=2,m = s =-1/2 (5)n=2,l= ,m=-1,m s =+1/2 (6)n=5,l=0,m= ,m s 【解答】(1) 3,4,5,……,正整数; (2) 0,1 (3) 0,±1,±2 (4) +1/2,-1/2 (5) 1 (6) 0 4.填上n、l、m、m s等相应的量子数: 量子数确定多电子原子轨道能量E的大小;Ψ的函数式则是由量子数所确定;确定核外电子运动状态的量子数是;原子轨道或电子云的角度分布图的不同情况取决于量子数。 【解答】主量子数n和角量子数l;主量子数n、角量子数l和磁量子数m;主量子数n、角量子数l、磁量子数m和自旋量子数m ; s 角量子数l和磁量子数m。 5.按近代量子力学的观点,核外电子运动的特征是。 A.具有波、粒二象性。 B.可以用∣Ψ∣2表示电子在核外出现的几率。 C.原子轨道的能量是不连续变化的。 D.电子的运动轨迹可以用Ψ的图象表示。 【解答】A,C。微观粒子电子的运动具有波粒二象性;可以用∣Ψ∣2表示电子在核外出现的几率密度或概率密度;原子轨道的能量是量子数的,即不连续变化的;∣Ψ∣2的空间图象是电子云。

数据库课后练习题

ORACLE数据库课程习题 1 通过SQL*PLUS等数据库访问工具登录数据库服务器时, 所需的数据库连接串是在以下哪个文件中定义的( )A (A) tnsnames.ora (B) sqlnet.ora (C) listener.ora (D) init.ora (E) 以上所述都不正确 2 以下关于数据库连接串的叙述正确的是( )E (A) 数据库连接串必须与数据库名一致 (B) 数据库连接串必须与全局数据库名一致 (C) 数据库连接串必须与数据库的实例名(INSTANCE)一致 (D) 数据库连接串必须与数据库的SID一致 (E) 以上所述都不正确 3 关于SQL*PLUS的叙述正确的是( )A (A) SQL*PLUS是ORACLE数据库的专用访问工具 (B) SQL*PLUS是标准的SQL访问工具,可以访问各类关系型数据库 (C) SQL*PLUS是所有ORACLE应用程序的底层API (D) SQL*PLUS是访问ORACLE数据库的唯一对外接口 (E) 以上所述都不正确 4 SQL*PLUS在ORACLE数据库系统中的作用,以下叙述正确的是( )C (A) 是ORACLE数据库服务器的主要组成部分,是服务器运行的基础构件. (B) 是ORACLE数据库系统底层网络通信协议,为所有的ORACLE应用程序提供一个公共的通信平台 (C) 是ORACLE客户端访问服务器的一个工具,通过它可以向服务器发送SQL命令 (D) 是ORACLE客户端到客户端的点对点的通信工具,用来传递各个客户端的数据 (E) 以上所述都不正确 5 命令sqlplus /nolog的作用是( )C (A) 仅创建一个ORACLE实例,但并不打开数据库. (B) 仅创建一个ORACLE实例,但并不登录数据库. (C) 启动sqlplus,但并不登录数据库 (D) 以nolog用户身份启动sqlplus (E) 以上所述都不正确

有机化学课后习题答案第16章

第十六章 重氮化合物和偶氮化合物 一、 命名下列化合物: 1. N 2HSO 4 2. CH 3 CONH N 2Cl 3. CH 3 N=N OH 4. 6. .CCl 2 . 二氯碳烯 二、 当苯基重氮盐的邻位或对位连有硝基时,其偶合反应的活性事增强还是降低?为什么? 解:偶合反应活性增强。邻位或对位上有硝基使氮原子上正电荷增多,有利于偶合反应。 N N + N =N + N =N + + OH N =N OH 三、 试解释下面偶合反应为什么在不同PH 值得到不同产物?

H 2N OH + C 6H 5N 2 + PH=5 H 2N OH N=NC 6H 5 H 2N OH N=NC 6H 5 解:PH 等于5时,氨基供电子能力强于羟基,偶合反应在氨基的邻位发生。 PH 等于9时,为弱碱性,羟基以萘氧负离子形式存在,氧负离子供电子能力大于氨基,偶合反应发生在羟基的邻位。 四、 完成下列反应式:

2. OH OCH 3+ CH 2N 2 3.CH 3 3(CH 3)3COK CH 3 Cl Cl 4.CH 3CH 2CH 2 C=C CH 2CH 2CH 3 H H + CH 2 ..CH 2CH 2CH 3 CH 2CH 2CH 3 H 五、 指出下列偶氮染料的重氮组分和偶连组分。 解: 重氮组分 偶连组分 1. N=N HSO 3 N(CH 3)2 HSO 3N 2 + N(CH 3)2 2. N=N N=N OH N=N N 2 + OH 3. CH 3CONH N=N CH 3 OH CH 3CONH N 2 + HO CH 3 4. NaSO 3N=N HO NaSO 3 N 2 + HO 5. SO 3H NH 2 N=N SO 3H N 2 N=N NH 2 SO 3H N 2 ++ NH 2 六、 完成下列合成:

matlab课后习题解答第二章

第2章符号运算 习题2及解答 1 说出以下四条指令产生的结果各属于哪种数据类型,是“双精度” 对象,还是“符号”符号对象 3/7+; sym(3/7+; sym('3/7+'); vpa(sym(3/7+) 〖目的〗 不能从显示形式判断数据类型,而必须依靠class指令。 〖解答〗 c1=3/7+ c2=sym(3/7+ c3=sym('3/7+') c4=vpa(sym(3/7+) Cs1=class(c1) Cs2=class(c2) Cs3=class(c3) Cs4=class(c4) c1 = c2 = 37/70 c3 = c4 = Cs1 = double Cs2 = sym Cs3 = sym Cs4 = sym 2 在不加专门指定的情况下,以下符号表达式中的哪一个变量被认 为是自由符号变量. sym('sin(w*t)'),sym('a*exp(-X)'),sym('z*exp(j*th)') 〖目的〗 理解自由符号变量的确认规则。 〖解答〗 symvar(sym('sin(w*t)'),1) ans = w symvar(sym('a*exp(-X)'),1)

ans = a symvar(sym('z*exp(j*th)'),1) ans = z 5求符号矩阵???? ??????=3332 31 232221 131211 a a a a a a a a a A 的行列式值和逆,所得结果应采用“子表达式置换”简洁化。 〖目的〗 理解subexpr 指令。 〖解答〗 A=sym('[a11 a12 a13;a21 a22 a23;a31 a32 a33]') DA=det(A) IA=inv(A); [IAs,d]=subexpr(IA,d) A = [ a11, a12, a13] [ a21, a22, a23] [ a31, a32, a33] DA = a11*a22*a33 - a11*a23*a32 - a12*a21*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31 IAs = [ d*(a22*a33 - a23*a32), -d*(a12*a33 - a13*a32), d*(a12*a23 - a13*a22)] [ -d*(a21*a33 - a23*a31), d*(a11*a33 - a13*a31), -d*(a11*a23 - a13*a21)] [ d*(a21*a32 - a22*a31), -d*(a11*a32 - a12*a31), d*(a11*a22 - a12*a21)] d = 1/(a11*a22*a33 - a11*a23*a32 - a12*a21*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31) 8(1)通过符号计算求t t y sin )(=的导数 dt dy 。(2)然后根据此结果,求- =0t dt dy 和2 π = t dt dy 。 〖目的〗 diff, limit 指令的应用。 如何理解运行结果。 〖解答〗 syms t

(完整版)数据库课后习题及答案

第一章数据库系统概述 选择题 1实体-联系模型中,属性是指(C) A.客观存在的事物 B.事物的具体描述 C.事物的某一特征 D.某一具体事件 2对于现实世界中事物的特征,在E-R模型中使用(A) A属性描述B关键字描述C二维表格描述D实体描述 3假设一个书店用这样一组属性描述图书(书号,书名,作者,出版社,出版日期),可以作为“键”的属性是(A) A书号B书名C作者D出版社 4一名作家与他所出版过的书籍之间的联系类型是(B) A一对一B一对多C多对多D都不是 5若无法确定哪个属性为某实体的键,则(A) A该实体没有键B必须增加一个属性作为该实体的键C取一个外关键字作为实体的键D该实体的所有属性构成键 填空题 1对于现实世界中事物的特征在E-R模型中使用属性进行描述 2确定属性的两条基本原则是不可分和无关联 3在描述实体集的所有属性中,可以唯一的标识每个实体的属性称为键 4实体集之间联系的三种类型分别是1:1 、1:n 、和m:n 5数据的完整性是指数据的正确性、有效性、相容性、和一致性 简答题 一、简述数据库的设计步骤 答:1需求分析:对需要使用数据库系统来进行管理的现实世界中对象的业务流程、业务规则和所涉及的数据进行调查、分析和研究,充分理解现实世界中的实际问题和需求。 分析的策略:自下而上——静态需求、自上而下——动态需求 2数据库概念设计:数据库概念设计是在需求分析的基础上,建立概念数据模型,用概念模型描述实际问题所涉及的数据及数据之间的联系。 3数据库逻辑设计:数据库逻辑设计是根据概念数据模型建立逻辑数据模型,逻辑数据模型是一种面向数据库系统的数据模型。 4数据库实现:依据关系模型,在数据库管理系统环境中建立数据库。 二、数据库的功能 答:1提供数据定义语言,允许使用者建立新的数据库并建立数据的逻辑结构 2提供数据查询语言 3提供数据操纵语言 4支持大量数据存储 5控制并发访问 三、数据库的特点 答:1数据结构化。2数据高度共享、低冗余度、易扩充3数据独立4数据由数据库管理系统统一管理和控制:(1)数据安全性(2)数据完整性(3)并发控制(4)数据库恢复 第二章关系模型和关系数据库 选择题 1把E-R模型转换为关系模型时,A实体(“一”方)和B实体(“多”方)之间一对多联系在关系模型中是通过(A)来实现的

【人教A版】高中数学必修2第二章课后习题解答

A 新课程标准数学必修2第二章课后习题解答 第二章 点 、直线、平面之间的位置关系 2.1空间点、直线、平面之间的位置关系 练习(P43) 1、D ; 2、(1)不共面的四点可确定4个平面;(2)共点的三条直线可确定1个或3个平面 3、(1)× (2)√ (3)√ (4)√ 4、(1)A ∈α,B ?α; (2)M ?α,M ∈a ; (3)a ?α a ?β 练习(P48) 1、(1)3条。分别是BB ’,CC ’,DD ’. (2)相等或互补 2、(1)∵BC ∥B ’C ’,∴∠B ’C ’A ’是异面直线A ’C ’与BC 所成的角。 在RT △A ’B ’C ’中,A ’B ’B ’C ’B ’C ’A ’=45°.因此,异面直线A ’C ’与BC 所成的角为45° (2)∵AA ’∥BB ’,∴∠B ’BC ’是异面直线AA ’与BC ’所成的角。在RT △B ’BC ’中,B ’C ’BB ’=AA=2,∴BC ’=4,∠B ’BC ’=60°.因此,异面直线AA ’与BC ’所成的角为60° 练习(P49) B 练习(P50)三个平面两两相交,它们的交线有一条或三条 习题2.1 A 组(P51)1、图略 2、图略 3、(1)√ (2)× (3)√ (4)× (5)× 4、(1)θ, (2)8, (3)2, (4)平行或在这个平面内, (5)b ∥平面α或b 与α相交, (6)可能相交,也可能是异面直线。 5、两条平行直线确定一个平面,第三条直线有两点在此平面内,所以它也在这个平面内。于是,这三条直线共面。 6、提示:利用平行关系的传递性证明AA ’∥CC ’,又利用相等关系的传递性证明AA ’=CC ’,因此,我们可得平行四边形ACC ’A ’,然后由平行四边形的性质得AB=A ’B ’,AC=A ’C ’,BC=B ’C ’,因此,△ABC ≌△A ’B ’C ’。 7、三条直线两两平行且不共面可以确定三个平面,如果三条直线交于一点则最多可以确定三个平面。 8、正方体各面所在平面分空间27部分。 B 组 1、(1) C ; (2) D ; (3)C. 2、证明:∵AB ∩α=P ,AB ?平面ABC ∴P ∈平面ABC ,P ∈α ∴P 在平面ABC 与α的交线上,同理可证,Q 和R 均在这条交线上,∴P ,Q ,R 三点共线 说明:先确定一条直线,在证明其他点也在这条直线上。 3、提示:直线EH 和FG 相交于点K ;由点K ∈EH ,EH ?平面ABD ,得K ∈平面ABD. 同理可证:点K ∈平面BCD ,而平面ABD ∩平面BCD=BD ,因此,点K ∈直线BD. 即EH ,FG ,BD 三条直线相交于一点。 2.2 直线、平面平行的判定及其性质 练习(P55) 1、(1)面A ’B ’C ’D ’,面CC ’D ’D ; (2)面DD ’C ’C ,面BB ’C ’C ; (3)面A ’D ’B ’C ’,面BB ’C ’C. 2、解:直线BD 1∥面AEC ,证明如下:连接BD 于AC 交于点F ,连接EF ∵AC 、BD 为正方形ABCD 的对角线 ∴F 为BD 的中点 ∵E 为DD 1的中点 ∴EF 为△DBD 1的中位线 ∴EF ∥BD 1 又∵EF ?平面AEC ,BD 1?平面AEC ∴BD 1∥平面AEC 练习(P58) 1、(1)命题不正确 (2)命题正确

西方经济学课后习题答案 第十六章

第十六章宏观经济政策 1.宏观经济政策目标有哪些?如何理解宏观经济政策目标之间的一致性和冲突关系? 【参考答案】 国家宏观调控的政策目标一般包括充分就业、物价稳定、经济增长和国际收支平衡四项。其中,充分就业是宏观经济政策的首要目标,它指劳动力和生产设备都达到充分利用的状态或总失业率等于自然失业率的状态。物价稳定是指通过宏观经济政策使某一时期内的一般物价水平保持相对稳定。经济增长是指在一个较长时间跨度内一国人均产出(或人均收入)水平的持续增加。国际收支平衡目标是指采取各种措施纠正国际收支差额,使之趋于平衡。 宏观经济政策的四个目标具有一致性和互补性,但也存在着矛盾和冲突。一致性主要是指对某一目标的追求或某一目标的实现,同时也能够促进或影响其他目标实现。互补关系主要表现在:一国经济能长期持续均衡增长,就业率就高,失业率就低,反之亦然。从宏观经济政策目标的矛盾和冲突来看,任何一种政策手段都有其副作用,对其他目标的实现产业不利的影响。著名的“米德冲突”说明了财政政策和货币政策在处理国际收支逆差与国内经济疲软并存或是国际收支顺差与国内同伙膨胀并存的情况时左右为难;而稳定物价与充分就业目标之间也经常发生冲突。 2.如何用IS-LM模型解释财政政策效应? 【参考答案】 财政政策效应是政府变动收支后对社会经济活动如就业、产出等产生的有效作用以及相应的反应。 从IS-LM模型看,财政政策效应是指IS曲线移动对国民收入变动的影响。这里考察扩张性财政政策的情况,紧缩性财政政策与之相反变动。如图所示,当 IS曲线和LM曲线相交于E 0点时,决定均衡的利率水平r 和均衡收入水平Y 。假

数据库sql课后练习题及答案解析

数据库sql课后练习题及答案解析 (borrow 表) (reader表)1) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。2) 列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排 序。4) 查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。5) 查找书名以”计算机”开头的所有图书和作者(WRITER)。6) 检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。9)* 无重复地查询xx年10月以后借书的读者借书证号(READER_ID)、姓名和单位。##10)* 找出借阅了一书的借书证号。11) 找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。12) 查询xx年7月以后没有借书的读者借书证号、姓名及单位。#13) 求”科学出版社”图书的最高单价、最低单价、平均单价。##14)* 求”信息系”当前借阅图书的读者人次数。#15) 求出各个出版社图

书的最高价格、最低价格和总册数。#16) 分别找出各单位当前借阅图书的读者人数及所在单位。17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。18) 分别找出借书人次数多于1人次的单位及人次数。19) 找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。20) 查询经济系是否还清所有图书。如果已经还清,显示该系所有读者的姓名、所在单位和职称。附录:建表语句创建图书管理库的图书、读者和借阅三个基本表的表结构:创建BOOK:(图书表)CREATE TABLE BOOK ( BOOK_ID int, SORT VARCHAR(10), BOOK_NAME VARCHAR(50), WRITER VARCHAR(10), OUTPUT VARCHAR(50), PRICE int); 创建READER:(读者表)CREATE TABLE READER (READER_ID int,COMPANY VARCHAR(10),NAME VARCHAR(10),SEX VARCHAR(2),GRADE VARCHAR(10),ADDR VARCHAR(50)); 创建BORROW:(借阅表)CREATE TABLE BORROW ( READER_ID int, BOOK_ID int, BORROW_DATE datetime)插入数据:BOOK表:insert into BOOK values(445501,'TP3/12','数据库导论','王强','科学出版社', 17、90);insert into BOOK values(445502,'TP3/12','数据库导论','王强','科学出版社', 17、90);insert into BOOK values(445503,'TP3/12','数据库导论','王强','科学出版社',

国际投资学第二章国际投资理论课本精炼知识点含课后习题答案

第二章国际投资理论 第一节国际直接投资理论 一、西方主流投资理论 (一)垄断优势论:市场不完全性是企业获得垄断优势的根源,垄断优势是企业开展对外直接投资的动因。 市场不完全:由于各种因素的影响而引起的偏离完全竞争的一种市场结构。 市场的不完全包括:1.产品市场不完全2..要素市场不完全3.规模经济和外部经济的市场不完全4.政策引致的市场不完全。 跨国公司具有的垄断优势:1.信誉与商标优势2.资金优势3.技术优势4.规模经济优势(内部和外部)5.信息与管理优势。 跨国公司的垄断优势主要来源于其对知识资产的控制。 垄断优势认为不完全市场竞争是导致国际直接投资的根本原因。 (二)产品生命周期论:产品在市场销售中的兴与衰。 (三)内部化理论:把外部市场建立在公司内部的过程。(纵向一体化,目的在于以内部市场取代原来的外部市场,从而降低外部市场交易成本并取得市场内部化的额外收益。) (1)内部化理论的基本假设:1.经营的目的是追求利润最大化2.企业可能以内部市场取代外部市场3.内部化跨越了国界就产生了国际直接投资。 (2)市场内部化的影响因素:1.产业因素(最重要)2.国家因素3.地区因素4.企业因素(最重要) (3)市场内部化的收益:来源于消除外部市场不完全所带来的经济效益,

包括1.统一协调相互依赖的企业各项业务,消除“时滞”所带来的经济效益。 2.制定有效的差别价格和转移价格所带来的经济效益。 3.消除国际市场不完全所带来的经济效益。 4.防止技术优势扩散和丧失所带来的经济效益。 市场内部化的成本:1.资源成本(企业可能在低于最优化经济规模的水平上从事生产,造成资源浪费)2.通信联络成本3.国家风险成本4.管理成本当市场内部化的收益大于大于外部市场交易成本和为实现内部化而付出的成本时,跨国企业才会进行市场内部化,当企业的内部化行为超越国界时,就产生对外直接投资。 (四)国际生产折衷理论:决定跨国公司行为和对外直接投资的最基本因素有所有权优势、内部化优势和区位优势,即“三优势范式”。 所有权优势:一国企业拥有或能够得到而他国企业没有或无法得到的无形资产、规模经济等方面的优势。(资产性所有权优势、交易性所有权优势~无形资产、规模经济优势) 内部化优势:企业为避免外部市场不完全性对企业经营的不利影响,将企业优势保持在企业内部。(外部市场不完全性包括结构型市场不完全~政府干预和自然性市场不完全) 区位优势:东道国投资环境和政策方面的相对优势对投资国所产生的吸引力。(包括要素禀赋性优势和制度政策性优势) 三个基本因素对企业选择参与国际经济活动方式的影响: 所有权优势=许可证贸易 所有权优势+内部化优势=商品出口 所有权优势+内部化优势+区位优势=国际直接投资

高鸿业《宏观经济学》课后习题答案第十六章习题答案

第十六章宏观经济政策实践 1.政府的财政收入政策通过哪一个因素对国民收入产生影响? A.政府转移支付; B.政府购买; C.消费支出; D.出口。 解答:C 2.假定政府没有实行财政政策,国民收入水平的提高可能导致()。 A.政府支出增加; B.政府税收增加; C.政府税收减少; D.政府财政赤字增加。 解答:B 3.扩张性财政政策对经济的影响是()。 A.缓和了经济萧条但增加了政府债务; B.缓和了萧条也减轻了政府债务; C.加剧了通货膨胀但减轻了政府债务; D.缓和了通货膨胀但增加了政府债务。 解答:A 4.商业银行之所以会有超额储备,是因为()。 A.吸收的存款太多; B.未找到那么多合适的贷款对象; C.向中央银行申请的贴现太多; D.以上几种情况都有可能。 解答:B 5.市场利率提高,银行的准备金会()。 A.增加; B.减少; C.不变; D.以上几种情况都有可能。 解答:B 6.中央银行降低再贴现率,会使银行准备金()。 A.增加; B.减少; C.不变; D.以上几种情况都有可能。 解答:A 7.中央银行在公开市场卖出政府债券是试图()。 A.收集一笔资金帮助政府弥补财政赤字; B.减少商业银行在中央银行的存款; C.减少流通中的基础货币以紧缩货币供给; D.通过买卖债券获取差价利益。 解答:C 8.什么是自动稳定器?是否边际税率越高,税收作为自动稳定器的作用越大?解答:自动稳定器是指财政制度本身所具有的减轻各种干扰对GDP的冲击的内在机制。

自动稳定器的内容包括政府所得税制度、政府转移支付制度、农产品价格维持制度等。在混合经济中投资变动所引起的国民收入变动比纯粹私人经济中的变动要小,原因是当总需求由于意愿投资增加而增加时,会导致国民收入和可支配收入的增加,但可支配收入增加小于国民收入的增加,因为在国民收入增加时,税收也在增加,增加的数量等于边际税率乘以国民收入,结果混合经济中消费支出增加额要比纯粹私人经济中的小,从而通过乘数作用使国民收入累积增加也小一些。同样,总需求下降时,混合经济中收入下降也比纯粹私人部门经济中要小一些。这说明税收制度是一种针对国民收入波动的自动稳定器。混合经济中支出乘数值与纯粹私人经济中支出乘数值的差额决定了税收制度的自动稳定程度,其差额越大,自动稳定作用越大,这是因为在边际消费倾向一定的条件下,混合经济中支出乘数越小,说明边 际税率越高,从而自动稳定量越大。这一点可以从混合经济的支出乘数公式 1 中得1-β(1-t) 出。边际税率t越大,支出乘数越小,从而边际税率变动稳定经济的作用就越大。举例来说,假设边际消费倾向为0.8,当边际税率为0.1时,增加1美元投资会使总需求增加3.57美元 =1× 1 ,当边际税率增至0.25时,增加1美元投资只会使总需求增加2.5美元1-0.8×(1-0.1) =1× 1 ,可见,边际税率越高,自发投资冲击带来的总需求波动越小, 说明 1-0.8×(1-0.25) 自动稳定器的作用越大。 9.什么是斟酌使用的财政政策和货币政策? 解答:西方经济学者认为,为确保经济稳定,政府要审时度势,根据对经济形势的判断,逆对经济风向行事,主动采取一些措施稳定总需求水平。在经济萧条时,政府要采取扩张性的财政政策,降低税率、增加政府转移支付、扩大政府支出,以刺激总需求,降低失业率;在经济过热时,采取紧缩性的财政政策,提高税率、减少政府转移支付,降低政府支出,以抑制总需求的增加,进而遏制通货膨胀。这就是斟酌使用的财政政策。 同理,在货币政策方面,西方经济学者认为斟酌使用的货币政策也要逆对经济风向行事。当总支出不足、失业持续增加时,中央银行要实行扩张性的货币政策,即提高货币供应量,降低利率,从而刺激总需求,以缓解衰退和失业问题;在总支出过多、价格水平持续上涨时,中央银行就要采取紧缩性的货币政策,即削减货币供应量,提高利率,降低总需求水平,以解决通货膨胀问题。这就是斟酌使用的货币政策。 10.平衡预算的财政思想和功能财政思想有何区别? 解答:平衡预算的财政思想主要分年度平衡预算、周期平衡预算和充分就业平衡预算三种。年度平衡预算,要求每个财政年度的收支平衡。这是在20世纪30年代大危机以前普遍采用的政策原则。周期平衡预算是指政府在一个经济周期中保持平衡。在经济衰退时实行扩张政策,有意安排预算赤字,在繁荣时期实行紧缩政策,有意安排预算盈余,用繁荣时的盈余弥补衰退时的赤字,使整个经济周期的盈余和赤字相抵而实现预算平衡。这种思想在理论上似乎非常完整,但实行起来非常困难。这是因为在一个预算周期内,很难准确估计繁荣与衰退的时间与程度,两者更不会完全相等,因此连预算都难以事先确定,从而周期预算平衡也就难以实现。充分就业平衡预算是指政府应当使支出保持在充分就业条件下所能达到的净税收水平。 功能财政思想强调,政府在财政方面的积极政策主要是为实现无通货膨胀的充分就业水平。当实现这一目标时,预算可以是盈余,也可以是赤字。功能财政思想是凯恩斯主义者的财政思想。他们认为不能机械地用财政预算收支平衡的观点来对待预算赤字和预算盈余,而应根据反经济周期的需要来利用预算赤字和预算盈余。当国民收入低于充分就业的收入水平时,政府有义务实行扩张性财政政策,增加支出或减少税收,以实现充分就业。如果起初存在财政盈余,政府有责任减少盈余甚至不惜出现赤字,坚定地实行扩张政策。反之亦然。总之。功能财政思想认为,政府为了实现充分就业和消除通货膨胀,需要赤字就赤字,需要盈余就盈余,而不应为了实现财政收支平衡来妨碍政府财政政策的正确制定和实行。 显然,平衡预算的财政思想强调的是财政收支平衡,以此作为预算目标或者说政策的目的,而功能财政思想强调,财政预算的平衡、盈余或赤字都只是手段,目标是追求无通胀的

数据库课后习题答案

第1章绪论 1 .试述数据、数据库、数据库系统、数据库管理系统的概念。 答: ( l )数据(Data ) :描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。数据与其语义是不可分的。解析在现代计算机系统中数据的概念是广义的。早期的计算机系统主要用于科学计算,处理的数据是整数、实数、浮点数等传统数学中的数据。现代计算机能存储和处理的对象十分广泛,表示这些对象的数据也越来越复杂。数据与其语义是不可分的。500 这个数字可以表示一件物品的价格是500 元,也可以表示一个学术会议参加的人数有500 人,还可以表示一袋奶粉重500 克。 ( 2 )数据库(DataBase ,简称DB ) :数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。 ( 3 )数据库系统(DataBas 。Sytem ,简称DBS ) :数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。解析数据库系统和数据库是两个概念。数据库系统是一个人一机系统,数据库是数据库系统的一个组成部分。但是在日常工作中人们常常把数据库系统简称为数据库。希望读者能够从人们讲话或文章的上下文中区分“数据库系统”和“数据库”,不要引起混淆。 ( 4 )数据库管理系统(DataBase Management sytem ,简称DBMs ) :数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地

2019中级实务新教材第二章存货习题(附答案)

第二章存货课后作业新参考答案 一.单项选择题 1.A公司为制造企业,其在日常经营活动中发生的下列支出,不应计入存货成本的是()。 A.生产车间的水电费等 B.季节性停工损失 C.产成品入库后的保管费 D.小规模纳税人的增值税进项税额 【答案】 C 【解析】选项B,季节性停工损失属于生产产品的必需支出,应当计入成本中;选项C,应在实际发生时直接计入当期损益;选项D,小规模纳税人的增值税进项税不能抵扣,要计入存货成本。 2.2014年12月31日,A公司库存原材料——B材料的账面价值(即成本)为120万元,市场价格总额为110万元,该材料用于生产K型机器。由于B材料市场价格下降,K型机器的销售价格由300万元下降为270万元,但生产成本仍为280万元,将B材料加工成K型机器尚需投入160万元,预计销售费用及税金为10万元,则2014年年底B材料计入当期资产负债表存货项目的金额为()万元。 A.110 B.100 C.120 D.90 【答案】B 【解析】 K型机器的可变现净值=270-10=260(万元),K型机器的可变现净值小于其成本280万元,即B材料的价格下降表明K型机器的可变现净值低于成本,因此B材料应按其可变现净值与成本孰低计量。B材料的可变现净值=270-160-10=100(万元),小于成本120万元,应计提20万元的存货跌价准备,B材料按照100万元列示在2014年12月31日资产负债表的存货项目中。 3.甲公司2015年12月31日库存配件100套,每套配件的账面成本为12万元,市场价格为10万元。该批配件可用于加工100件A产品,将每套配件加工成A产品尚需投入17万元。A产品2015年12月31日的市场价格为每件28.7万元,估计销售过程中每件将发生销售费用及相关税费1.2万元。该配件此前未计提存货跌价准备,甲公司2015年12月31日该配件应计提的存货跌价准备为()万元。 A.0 B.30 C.150 D.200 【答案】C 【解析】配件是用于生产产品的,故先判断产品是否发生减值,如果产品减值,再判断配件是否发生减值;如果产品没有发生减值,那么配件按照成本计量。A产品的可变现净值=100×(28.7-1.2)=2750(万元),A产品成本=100×(12+17)=2900(万元),说明A产品发生了减值;配件可变现净值=100×(28.7-17-1.2)=1050(万元),配件成本=100×12=1200(万元),配件应计提的存货跌价准备=1200-1050=150(万元)。 4.2×12年12月31日,A公司库存钢板乙(均用于生产甲产品)的账面价值(即成本)为185万元,市价为180万元,假设不发生其他销售费用;钢板乙生产的甲产品的市场销售价格总额由380万元下降为310万元,但生产成本仍为305万元,将钢板乙加工成甲产品尚需投入其他材料120万元,预计销售费用及税金为7万元,则2×12年末钢板乙的可变现净值为()万元。 A.303 B.183 C.185 D.180 【答案】 B 【解析】本题考查知识点:可变现净值的确定; 材料用于生产产品的,必须先判断产品是否发生减值,如果产品减值,再判断材料是否发生减值;如果产品没有发生减值,那么材料按照成本计量。为生产甲产品而持有的钢板乙可变现净值是该钢板生产的甲产品的售价减去至完工时估计将要发生的成本.估计的销售费用以及相关税费,所以,钢板乙的可变现净值=310-7-120=183(万元)。 5.下列各项中,应计入存货实际成本中的是()。

DS第二章-课后习题答案

第二章线性表 2.1 填空题 (1)一半插入或删除的位置 (2)静态动态 (3)一定不一定 (4)头指针头结点的next 前一个元素的next 2.2 选择题 (1)A (2) DA GKHDA EL IAF IFA(IDA) (3)D (4)D (5) D 2.3 头指针:在带头结点的链表中,头指针存储头结点的地址;在不带头结点的链表中,头指针存放第一个元素结点的地址; 头结点:为了操作方便,在第一个元素结点前申请一个结点,其指针域存放第一个元素结点的地址,数据域可以什么都不放; 首元素结点:第一个元素的结点。 2.4已知顺序表L递增有序,写一算法,将X插入到线性表的适当位置上,以保持线性表的有序性。 void InserList(SeqList *L,ElemType x) { int i=L->last; if(L->last>=MAXSIZE-1) return FALSE; //顺序表已满 while(i>=0 && L->elem[i]>x) { L->elem[i+1]=L->elem[i]; i--; } L->elem[i+1]=x; L->last++; } 2.5 删除顺序表中从i开始的k个元素 int DelList(SeqList *L,int i,int k) { int j,l; if(i<=0||i>L->last) {printf("The Initial Position is Error!"); return 0;} if(k<=0) return 1; /*No Need to Delete*/ if(i+k-2>=L->last) L->last=L->last-k; /*modify the length*/

财管教材练习题参考解答

第二章 练习题解答 练习一 1. 2. 3. 4.P =10000÷8%=125,000(元) 5.850000=×PVIFA(i,30);PVIFA(i,30)=;i =9% 6.12000=1500×PVIFA(9%,n);运用插值法得出n =年 7. (1)P =10,000×PVIF(8%,3)=7,938(元) (2)10,000=A ×FVIFA(8%,4);A =2,(元) (3)7,500×FVIF(8%,3)=9,<10,000;选择(2) (4)10,000=7,500×FVIF(i,3);运用插值法,得出i =% (5)FVIFA(I,4)=10000÷=,得出i =20% 练习二 1.计算A 、B 两方案的期望报酬率; 2.计算A 、B 两方案的标准离差和标准离差率; )(418,12)5%,10(*200005元==PVIF P ) (7.3992)5%,8(*10005 元==PVIFA P %20=K A %20=K B 253.0064.0==δA 1265.0016.0==δ B 6325 .0%201265 .0265 .1%20253.0====Q Q B A (元)5 .67003401.1*5000) 6%,5(*5000) 2 % 101(*50003 *23===+=FVIF F

3.计算A 、B 两方案考虑风险的必要投资报酬率; 风险报酬率A =12%*=% 风险报酬率B =12%*=% 第三章 练习题解答 练习一 所以,1~5年的NCF 分别为309、324、294、、249万元。 因此, (其中,633=309+324) 练习二 A 设备年折旧=(21+10-5)/6=(万元) B 设备年折旧=(21-3)/6=3(万元) 所以,新旧设备的年折旧增加额==(万元) 1~5年的年NCF 增量= []*(1-25%)+=*+=(万元) 第6年的NCF 增量=+2=(万元) 因此,NPV 增量=*PVIFA(10%,5)+*PVIF(10%,6)-10= -<0 (或=*PVIFA(10%,6)+2*PVIF(10%,6)-10= -<0) 决策:继续使用旧设备 %59.15%59.7%8%18.23%18.15%8=+==+=K K B A 220240********* (125%) 519.31%800++++-==税后投资报酬率800(110%) 1445 -= =年折旧(万元) 800633 2 2.57294-=+=投资回收期(年)

(完整版)微观经济学第二章课后习题答案

第二章需求、供给和均衡价格 1.解: (1)将需求函数Q d= 50-5P和供给函数Q s=-10+5P代入均衡条件Q d=Q s ,有:50- 5P= -10+5P 得: Pe=6 以均衡价格Pe =6代入需求函数Q d=50-5p ,得: Qe=50-5×6 或者,以均衡价格 Pe =6 代入供给函数Q s =-10+5P ,得:Qe=-10+5×6 所以,均衡价格和均衡数量分别为Pe =6 , Qe=20 图略. (2)将由于消费者收入提高而产生的需求函数Q d=60-5p和原供给函数Q s=-10+5P, 代入均 衡条件Q d=Q s有: 60-5P=-10+5P 解得Pe =7 以均衡价格Pe =7代入Q d=60-5p ,得 Qe=25 或者,以均衡价格Pe =7代入Qs =-10+5P, 得Qe=25 所以,均衡价格和均衡数量分别为Pe =7,Qe=25 (3)将原需求函数Q d=50-5p 和由于技术水平提高而产生的供给函数Q s=-5+5p ,代入均衡条件Q d=Q s,有: 50-5P=-5+5P得 P e=5.5 以均衡价格Pe=5.5代入Q d=50-5p, 得Qe=50-5×5.5=22.5 所以,均衡价格和均衡数量分别为Pe=5.5,Qe=22.5图略。 (4)(5)略 2.解: (1)根据中点公式计算,e d=1.5 (2)由于当P=2时,Q d=500-100*2=300,

所以,有: 22 .(100)3003 d dQ P dP Q e =- =--*= (3)作图,在a 点P=2时的需求的价格点弹性为:e d =GB/OG=2/3或者e d =FO/AF=2/3 显然,利用几何方法求出P=2时的需求的价格弹性系数和(2)中根据定义公式求出结果是相同的,都是e d =2/3 3解: (1) 根据中点公式 求得:4 3 s e = (2) 由于当P=3时,Qs=-2+2×3=4,所以 3 .2 1.54 s dQ P dP Q e = =?= (3) 作图,在a 点即P=3时的供给的价格点弹性为:e s =AB/OB=1.5 显然,在此利用几何方法求出的P=3时的供给的价格点弹性系数和(2)中根据定义公式求出的结果是相同的,都是e s =1.5 4.解: (1)根据需求的价格点弹性的几何方法,可以很方便地推知:分别处于不同的线性需求曲线上的a 、b 、e 三点的需求的价格点弹性是相等的,其理由在于,在这三点上都有: e d =FO/AF (2)根据求需求的价格点弹性的几何方法,同样可以很方便地推知:分别处于三条线性需求曲线上的a 、e 、f 三点的需求的价格点弹性是不相等的,且有e da

数据库课本例题

Use basetest 【例1】查询全体学生的记录 【例2】查询全体学生的姓名和性别。 【例3】查询全体学生的姓名和出生年份。 【例4】在例3的基础上,将字段名替换成中文名显示。 【例5】显示学生表student中前5行数据。 【例6】查询学生课程表sc中选修了课程的学生学号。 【例7】查询SC表中选修了课程的学生学号、姓名、院系、课程号和成绩。 【例8】以student为主表查询例7。 【例9】查询表student中年龄大于20岁的学生姓名性别和各自的年龄大小。 【例10】查询年龄在21岁到23岁(包括21和23岁)之间的学生信息。 【例11】查询所有姓黄的学生的姓名、性别、年龄、院系 【例12】查询数学系(MA)学生的姓名、性别和年龄。 【例13】查询没有选修课(cpni)的课程名和学分。 【例14】查询cs系中男生的学号和姓名。 【例15】查询在sc表中选课了的女生的学号和姓名。 【例16】按学生年龄的降序对学生进行排序。 【例17】按院系、学号等对学生情况进行分组。 【例18】按院系、学号等对女学生情况进行分组。 【例19】按院系、性别查看学生的平均年龄。 【例20】在例19的基础上使用WITH CUBE关键字。 【例21】在例19的基础上使用WITH ROLLUP关键字。 【例22】求sc表中选修了课程的学生的总成绩。 【例23】计算选修了课程学生的平均成绩。 【例24】查询选修了课程的学生选修课程的数目 【例25】查询CS系中年龄最大的学生的姓名以及年龄 【例26】查询学号为05007的学生的选修课程的平均成绩和最高成绩 【例27】查询选修了课程5的学生信息,并计算平均成绩和最高成绩,以成绩高低排序。 查询所有系中年龄最大的学生的姓名以及年龄 【例28】查询选修了课程6的学生学号和姓名 【例29】查询选修了数据库的学生信息。 【例30】查询选修了课程6的学生学号、姓名和性别。 【例31】查询除了IS系的其他系中年龄不大于IS系中最小年龄学生的学生信息。 【例32】查询IS系的学生以及年龄大于20岁的学生。 【例33】对例32使用UNION ALL子句。

相关文档
最新文档