1.1 习题1解答
1.
(1)机器语言是计算机直接理解执行的语言,由一系列(二进制)指令组成,其助符构成了汇编语言;接近人的自然语言习惯的程序设计语言为高级语言。
(2)结构化程序设计方法主要内容有:自顶向下,逐步求精;面向对象方法将现实世界中的客观事物描述成具有属性和行为的对象,抽象出共同属性和行为,形成类。
(3)C++程序开发通常要经过5个阶段,包括:编辑,编译,连接,运行,调试。首先是编辑阶段,任务是编辑源程序,C++源程序文件通常带有.cpp扩展名。接着,使用编译器对源程序进行编译,将源程序翻译为机器语言代码(目标代码),过程分为词法分析、语法分析、代码生成3个步骤。
在此之前,预编译器会自动执行源程序中的预处理指令,完成将其他源程序文件包括到要编译的文件中,以及执行各种文字替换等。
连接器的功能就是将目标代码同缺失函数的代码连接起来,将这个“漏洞”补上,生成可执行文件。程序运行时,可执行文件由操作系统装入内存,然后CPU从内存中取出程序执行。若程序运行进程中出现了错误,还在需要对程序进行调试。
(4)对象与对象之间通过消息进行相互通信。
(5)类是具有相同属性和行为的一组对象的抽象;任何一个对象都是某个类的一个实例。
(6)多态性是指在一般类中定义 的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
(7)面向对象的软件开发过程主要包括面向对象的方法分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的维护。
(8)泛型程序设计是指在程序设计时,将数据类型参数化,编写具有通用性和可重用的程序。
(9)# include <iostream>是一条预处理指令(语句),在编译(或预处理)时由编译器(或预编译器)执行,其功能是将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)十进制数值、八进制数值、十六进制数值的前缀分别为19, 0, 0x(0X)
3)一个整数值的数据类型为int,一个带小数点的数据类型为double
4C++预定义的常用转义序中,在输出流中用于换行、空格的转义序列分别为\n,\t
5)布尔型数值只有两个;true, false。在C++的算术运算式中,分别当作1,0。
6)字符由单引号’’括起来,字符串由双引号“”括起来。字符只能有1个字符字符串可以有多个字符。空串的表示方法为“\0”(或“ ”)。
7)标识符以英文字母,下划线开头。
8)定义变量的同时赋初值的方法有赋值运算符=,括号。定义常变量初值的方法有赋值运算符=,括号。
9)关系运算符操作数的类型可以是任何基本数据类型,对其中的实数类型不能进行直接比较(if(a<b)那么ab为什么可以是floatdouble?
(-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<class t1,typename t2,int s=0>
(11)若fun(8,3.1)调用的可以是fun(double, double)――(当没有精确匹配时,优先进行向高类型转换后的匹配)
(12)若fun(8,3.1)调用的可以是template <class T1, class T2>fun (T1,T2)
1.5  习题5解答
1.
(-1)enum weekday {sun,mon,tue,wed=d,thu,fri,sat};
    weekday workday =mon;
    cout<<workday+wed<<endl;
    输出: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++源程序中以#开头,以换行符结尾的行称为预处理命令。预处理命令编译前由预处理器执行。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。