课后答案-C语言程序设计教程(第二版)

上传人:夏** 文档编号:512539606 上传时间:2022-12-03 格式:DOC 页数:22 大小:56.50KB
返回 下载 相关 举报
课后答案-C语言程序设计教程(第二版)_第1页
第1页 / 共22页
课后答案-C语言程序设计教程(第二版)_第2页
第2页 / 共22页
课后答案-C语言程序设计教程(第二版)_第3页
第3页 / 共22页
课后答案-C语言程序设计教程(第二版)_第4页
第4页 / 共22页
课后答案-C语言程序设计教程(第二版)_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《课后答案-C语言程序设计教程(第二版)》由会员分享,可在线阅读,更多相关《课后答案-C语言程序设计教程(第二版)(22页珍藏版)》请在金锄头文库上搜索。

1、1.1 习题1解答1.(1)机器语言是计算机直接理解执行的语言,由一系列(二进制)指令组成,其助记符构成了汇编语言;接近人的自然语言习惯的程序设计语言为高级语言。(2)结构化程序设计方法主要内容有:自顶向下,逐步求精;面向对象方法将现实世界中的客观事物描述成具有属性和行为的对象,抽象出共同属性和行为,形成类。(3)C+程序开发通常要经过5个阶段,包括:编辑,编译,连接,运行,调试。首先是编辑阶段,任务是编辑源程序,C+源程序文件通常带有 .c p p 扩展名。接着,使用编译器对源程序进行编译,将源程序翻译为机器语言代码(目标代码),过程分为词法分析、语法分析、代码生成3个步骤。在此之前,预编译

2、器会自动执行源程序中的预处理指令,完成将其他源程序文件包括到要编译的文件中,以及执行各种文字替换等。连接器的功能就是将目标代码同缺失函数的代码连接起来,将这个“漏洞”补上,生成可执行文件。程序运行时,可执行文件由操作系统装入内存,然后CPU从内存中取出程序执行。若程序运行进程中出现了错误,还在需要对程序进行调试。(4)对象与对象之间通过消息进行相互通信。(5)类是具有相同属性和行为的一组对象的抽象;任何一个对象都是某个类的一个实例。(6)多态性是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。(7)面向对象的软件开发过程主要包括面向对象的方法分析、面向

3、对象的设计、面向对象的编程、面向对象的测试和面向对象的维护。(8)泛型程序设计是指在程序设计时,将数据类型参数化,编写具有通用性和可重用的程序。(9)# include 是一条预处理指令(语句),在编译(或预处理)时由编译器(或预编译器)执行,其功能是将iostream文件包含(复制)到指令处。(10)C+中使用cin作为标准输入流对象,通常代表键盘,与提取操作符连用;使用cout 作为标准输出流对象,通常代表显示设备,与 连用。2.简答题(1)叙述机器语言、汇编语言、高级语言的特点。机器语言是计算机直接执行的语言,由二进制的和构成的一系列指令组成;汇编语言是机器语言的助记符;高级语言是接近人

4、的自然语言习惯的编程语言,通过编译变成机器语言。(2)结构化的语言与面向对象的语言是截然分开的吗?不是截然分开的,面向对象的程序设计中也包含过程,含有结构化的思想。(3)C编写的程序不加修改就可以在C+编译器中编译。(5)C+程序通过编译变成带扩展名.obj的目标文件;再通过连接变成带扩展名.exe的可执行文件。(6)如果要求不使用include包含头文件,有什么办法使程序正常编译运行?在相应的文件夹(子目录)中,找到需要包含的头文件,将头文件复制到包含处。3. 单选C+语言程序能够在不同操作系统下编译、运行,说明C+具有良好的移植性。(可以说C+语言完全兼容C语言,但是在这不能说C+语言程序

5、能兼容不同的操作系统;对于计算机硬件,一般使用“兼容”一词,对于程序使用“移植”)。(3)#include语句在程序运行前就执行了。(4)C+程序运行时总是起始于main( );(5)用C+写程序时一个语句可分几行写。(6)面向对象编程方法有:对象、继承、类等。1.2习题2解答1.(1)C+的基本数据类型可分为5大类:逻辑型(或布尔型)、字符型、整形、实型、空值型。分别用关键字 bool , char , int , float / double , void 定义。长度分别为,/8,不定字节。整型、字符型的默认符号修饰为signed。(2)十进制数值、八进制数值、十六进制数值的前缀分别为19

6、 , 0 , 0x(或0X)。(3)一个整数值的数据类型为int,一个带小数点的数据类型为double。(4)C+预定义的常用转义序中,在输出流中用于换行、空格的转义序列分别为n,t。(5)布尔型数值只有两个;true,false。在C+的算术运算式中,分别当作,。(6)字符由单引号括起来,字符串由双引号“”括起来。字符只能有个字符,字符串可以有多个字符。空串的表示方法为“0”(或“”)。(7)标识符以英文字母,下划线开头。(8)定义变量的同时赋初值的方法有赋值运算符,括号。定义常变量初值的方法有赋值运算符,括号。(9)关系运算符操作数的类型可以是任何基本数据类型,对其中的实数类型不能进行直接

7、比较。(if(a运算符将一个数右移n位,相当于将该数除以2n,运算符将一个数左移n位,相当于将该数乘以2n。(12)所有含赋值运算的运算符左边要求是左值。(13)前置+、的优先级高于后置+、。(14)按操作数数目分,运算符的优先级从高到低排列为单目、双目、三目,按运算符的性分,优先级从高到低排列为算术、移位、关系、按位、逻辑。(15)在表达式中会产生副作用的运算符有+、- -、各类赋值。1.3 习题3解答1.(1)if语句中的表达式可以是任意表达式(关系表达式、逻辑表达式、算术表达式、常量)。1.4 习题4解答1.(1)一个C+程序就是由一个个函数组成的即使是最简单的程序也有一个main()函

8、数。(2)函数执行过程中通过return语句将函数值返回,当一个函数不需要返回值,此时需要使用void作为类型名。(3)在C+中,如果函数定义在后,调用在先,需要进行函数原型声明,告诉编译器函数的(返回)类型,函数名,形式参数。其格式和定义函数时的函数头的形式基本相同,它必须以分号;结尾。(4)函数调过程的3个步骤为:函数调用(或参数传递),函数体执行,返回。(5)函数参数传递过程的实质是将实参值通过堆栈一一传送给实参。(实参传给实参?)(6)递归程序分两个阶段执行调用,回代。(7)带inline关键字定义的函数为内联函数,在编译时将函数体展开到所有调用处。内联函数的好处是节省执行时间开销。(

9、8)函数名相同,但对应形参表不同的一组函数称为重载函数,参数表不同是指参数个数、类型不同。(9)确定对重载函数中函数进行绑定的优先次序为 精确匹配 ,对实参的类型向高类型转换后的匹配,实参类型向低类型及相容类型转换后的匹配。(10)当既存在重载函数、又有函数模板,函数调用优先绑定重载函数,只有不能精确匹配重载函数时,才实例化类模板。(11)内联函数的展开、重载函数的绑定、类模板的实例化与绑定均在编译 阶段进行。(12)在C+中,函数不允许嵌套定义,允许嵌套调用。2.(1) void fun(void) 的定义是正确的。double fun(int x;int y) 和int fun();和do

10、uble 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)系统在调用重载函数时,依据的是函数名称、实参个数、实

11、参类型。不能是函数类型。(9)为了取代C中带参数的宏,在C+ 中使用内联函数。(10)函数模板定义的头部template(11)若fun(8,3.1)调用的可以是fun(double, double)(当没有精确匹配时,优先进行向高类型转换后的匹配)(12)若fun(8,3.1)调用的可以是template fun (T1,T2)1.5 习题解答1.(1)enum weekday sun,mon,tue,wed=4,thu,fri,sat; weekday workday =mon; coutworkday+wedendl; 输出:5(怎么加的?)(2)在C+中,引用数组元素时,其数组下标的数

12、据类型允许是非浮点型表达式,整形常量、整形表达式(整型表达式实际上包含了整型常量)。(3)设有数组定义:char array=”China”; 则数组array所占的空间为6个字节(0)。(4)若:int a3 = 1,2,3,4,5,6,7; 则a 数组高维的大小为:3。(6)若二维数组a有m 列,则在aij前的元素个数为 i*m+j ;1.6 习题六解答1(1) 从变量的定义位置分,可分为全局变量与局部变量。其中,局部变量定义在函数或复合语句中,供函数或复合语句中使用。(2) 变量的存储类型分为 auto , extern , register , static 。当声明一个静态(stat

13、ic)变量,它既具有局部变量的性质,又具有全局变量的性质。(3) +程序的内存分为个区:全局数据区,代码区,栈区,堆区。全局变量,静态变量,字符串常量存放在全局数据区,所有在函数和代码存放在代码区,为运行函数而分配的函数参数,局部变量,返回地址存放在 栈 区。动态分配的内存在 堆 区。(4) 全局变量,静态变量具有静态生存期;局部变量生存期为动态。(5) 函数原型中形参标识符的作用域为为函数原型,函数的形参与函数体作用域为块作用域;函数,全局变量与常量有文件作用域。(6) +源程序中以 # 开头,以换行符结尾的行称为预处理命令。预处理命令 编译 前由预处理器执行。(7) 可以通过种方法使用名字

14、空间,个别使用声明方式,全局声明方式,全局声明个别成员。2.(1) 在+中,函数默认的存储类别为:auto。(2)函数的形式参数是局部变量,在一个函数体内定义的变量只在本函数范围内有效,在函数的复合语句中定义的变量只在此复合语句中有效。(3)# define PI 3.14 预处理命令必须以#开头,凡是以#开头的都是预处理命令行,在程序执行前执行预处理命令。(4)动态分配的内存要用delete释放,局部auto变量分配的内存在函数调用结束时释放,全局变量的内存在程序结束时释放。1.7习题7解答1.(1)类的私有成员只能被该类的成员函数或友元函数访问。(2)类的数据成员不能在定义的时候初始化,而应该通过构造函数初始化。(3)类成员默认的访问方式是private.(4)类的公有成员函数的集合是该类给外界提供的接口。(5)类的公有成员可以被类作用域内的任何对象访问。(6)为了能够访问到某个类的私有成员,必须在该类中声明该类的友元。(7)类的静态成员为该类的所有对象所共享。(8)每个对象都有一个指向自身的指针,称为this指针,通过使用它来确定其自身的地址

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号