c++复习题(答案) 下载本文

四、读程序题,写出程序运行输出的结果。

1. #include

using namespace std; class Student { private :

char Name[8]; float Math; float Chinese; public :

float average;

void SetName(char *name); void SetMath(float math); void SetChinese(float ch); float GetAverage(void); };

class Student1 {

char ID[12]; public :

float total; //“标记1”

void SetTotal(float sum) {}; //“标记2” };

void main() { Student S1,S2; Student1 S3;

cout<<\cout<<\}

(a)该程序运行后,输出结果是:

the size of object S1 is: 20 the size of object S3 is:16

(b) 如果修改程序:在“标记 1”代码行前面加入 static, 在“标记 2”代码行前加入

virtual,那么输出结果是:

the size of object S1 is: 20 the size of object S3 is:16

(注:sizeof()对类体的计算如下:

9 1.空类的大小为1字节。 3. c++规定任何类型的指针大小为4个字节 。 5. 静态变量在计算时是不做考虑的。

2.int占4字节 ,char型占1字节,float型占4字节。 4. 一个虚函数也占4个字节的指针内存。 6.其他成员函数(如构造,析构函数)不纳入计算,因为成员函数是针对类体的;而sizeof()只针对实例。

2. #include

using namespace std; class A{ float x,y; public:

A(float a, float b)

{x=a;y=b;cout<<\初始化自动局部对象\\n\A(){

x=0; y=0; cout<<\初始化静态局部对象\\n\

A(float a)

{ x=a; y=0; cout<<\初始化全局对象\\n\~A(){ cout<<“调用析构函数”<

};

A a0(100.0); //定义全局对象 void f(void)

{ cout<<\进入f()函数\\n\

A ab(10.0, 20.0); //定义局部自动对象

static A a3; //初始化局部静态对象 }

void main(void) {

cout<<\进入main函数\\n\f(); f(); }

2、输出结果: 初始化全局对象 进入main函数 进入f()函数 初始化自动局部对象 3. 如果在缺省目录下有文件file1.txt,文件中内容为:

1 2 3 4 5 执行下列程序后 #include #include using namespace std; void main(void)

初始化静态局部对象 调用析构函数 进入f()函数 初始化自动局部对象 调用析构函数 调用析构函数 调用析构函数 10

{ fstream f1; int tmp, sum=0;

f1.open(\while(f1>>tmp)

sum+= tmp; f1.close( ); cout<

}

程序的输出是: 15 (1+2+3+4+5=15)

五、编程题

1. 掌握基类和派生类的编程设计方法。

复习范围包括:1)上机实验作业 2)课堂上所讲的 PPT 示例 3)谭版教材例子,比如 点、矩形、三角形、圆的派生类,周长、面积等成员函数。

2. 掌握文本文件和二进制文件读写的编程设计方法。

复习范围包括: 1)上机实验作业 2)课堂上所讲的PPT示例。

11