第二章习题集答案

发布时间 : 星期日 文章第二章习题集答案更新完毕开始阅读

第二章习题答案

一、 填空题

1. 预处理2. 冲突3. 初始化4.相同5. static 6. 动态(局部)7. const 8. .h和.cpp

9. 空白符10.x 11.int &y=x 12.P=new int(20);13.new、delete 14.常量、const 15.引用、传递变量地址(或传址)16. Inline 17.重载函数 18.用户 19. 文件包含20.Std 21.Ifstream fin(“text.txt”,ios_base::in) 22.iostream 23.函数参数是引用类型、函数的返回类型是对变量的引用

二、判断题

1.正确2.错误3.正确4.正确5.正确6.错误7.正确8.错误9.错误10.正确11.错误.12正确 13.正确

三、选择题

1.A 2.D 3.D 4.B 5.C 6.A 7.D 8.C 9.C 10.B 11.C 12.D 13.C 14.A 15. D 16.B 17.C 18.C 19.B 20.D 21.B 22.A 23.D 24.A 25.B 26.D 27.B

四、程序改错题

1.请用下划线标出下面程序中的错误代码,并说出错误原因和改错方法。 答:错误:c=add(a);

错误原因:二义性,当程序执行c=add(a);不知是调用add(int x)函数,还是调用 add(int x,int y=5)函数。

2.请用下划线标出下面程序中的错误代码,并说出错误原因和改错方法。 答:错误:complex(,a);

错误原因:在调用具有默认参数值的函数时,若某个实参默认而省略,则其右面的所有实参皆应省略而采用默认值。不允许某个参数省略后,再给其右面的参数指定参数值。r默认了,而右面的s没有默认。

改错:complex(b,a);或complex();

3.以下程序使用函数swap()实现a、b变量值的交换,分析此程序是否能够实现a、b值的交换,如不能,请用下划线标出错误所在行,并说明错误原因及修改意见。

答:错误:swap(a,b);

错误原因:swap(a,b);函数参数是单值传递,形参的变化不改变实参的变化,所以不能实现a、b值的交换。 改错:swap(&a,&b);

4.请用下划线标出下面程序中的错误代码,并说出错误原因和改错方法。

答:错误:i++;

错误原因,i是个常量,常量值在程序运行期间不能改变的。而i++;欲将改变i的值。 改错:删去i++;语句。

5.请用下划线标出下面程序中的错误代码,并说出错误原因和改错方法。 答:错误:int &ir;ir=i;

错误原因:定义引用&ir必须对它进行初始化。

改错:将int &ir; ir=i;这两句程序代码修改为:int &ir=i;

6.请用下划线标出下面程序中的错误代码,并说出错误原因和改错方法。 答:错误:i=2;

错误原因:i虽然为static,但其作用域为函数f()内部。 改错:去掉i=2;这行程序代码。

五、程序阅读题

1. 阅读下面程序,写出运行结果 答: a=100 b=1000

2.阅读下面程序,写出运行结果 答: i=7

j=6 i=5

3.阅读下面程序,写出运行结果 答:1760 5632

12006000

4.阅读下面程序,写出运行结果 答: ra=44

a=0

5. 阅读并写出下面程序的运行结果 答:120

20 100 300

6. 阅读并写出下面程序的运行结果 答:

7.阅读下面程序,理解值传递与引用传递的不同,并写出程序运行结果。

答: The values are 8 22 The values are 18 32 The values are 8 32

六、程序设计题

1.已知一个student结构体,请编写主函数,为student结构体开辟动态存储空间并赋值,然后输出student的这些值。

struct student { char name[10]; int num; char sex; }; 答案:

#include #include

using namespace std; struct student { char name[10]; int num; char sex; };

int main() { student *p; p=new student;

strcpy(p->name,\ ) p->num=20100024; p->sex=\

cout<name<<\<numa2<<\<sex<

deplete p; return 0;

}

2.编写计算面积的函数,分别计算圆、矩形、梯形和三角形等图形的面积,下面是计算这些图形面积的函数原型声明,请编程定义这些函数的实现。

double area(double radius=0); //圆的面积 double area(double a,double b); //矩形面积 double area(double a,double b,double h);// 梯形面积

double area(double a,double b,double c,int);// 三角形面积,int型参数起表示作用,以区别梯形,不参加计算。

答案:

#include \#include #include using namespace std; #define PI 3.14159

double area(double radius=0); //圆的面积 double area(double a,double b); //矩形面积y

double area(double a,double b,double h);// 梯琘形面积 double area(double a,double b,double c,int);// 三角形面积 int _tmain(int argc, _TCHAR* argv[]) {

cout<<\ cout<<\ cout<<\

cout<<\ return 0; }

double area(double radius) {return PI*radius*radius; }

double area(double a,double b) {return a*b; }

double area(double a,double b,double h) {

return (0.5*(a+b)*h); }

double area(double a,double b,double c,int) { double s=0.5*(a+b+c);

return sqrt(s*(s-a)*(s-b)*(s-c)); }

3.编程:将上题以多文件组织,在area.h头文件中声明各个area()函数原型,在area.cpp中定义函数实现,然后再exp.cpp文件中包含area.h,定义main()函数并测试。 答:略

4.编写重载函数max(),求三个数中最大的数,分别考虑整数、实数和长整数,并在主函数中测试之。 答:略

5.创建磁盘文件book.txt,编写程序将书的信息:书名、作者、出版社、出版时间等保存到该文件中。

6.编写程序,打开上题创建的book.txt文件,从中读取并显示任意一条书信息。 7.某单位职工的基本工资数据如下:

职工编号 姓名 基本工资 岗位工资 奖金 实发工资 100120 王青 3066 2000 300 100121 李悦悦 2830 1686 286 100122 张尚礼 3841 2641 362

100123 陈莉 2830 1822 246

编写程序,从键盘输入各位职工的工资数据,存入磁盘文件salary.txt中,然后读出职工的工资数据,并计算出每位职工的实发工资,实发工资等于基本工资、岗位工资、奖金之和。

联系合同范文客服:xxxxx#qq.com(#替换为@)