新标准C++程序设计教材11-20章课后题答案
第11章:
1.简述结构化程序设计有什么不足,面向对象的程序如何改进这些不足。
答案:
结构化程序设计的缺点:
(1)用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。
(2)用系统开发每个阶段的成果来进行控制,不适应事物变化的要求。
(3)系统的开发周期长。
面向对象的程序设计如何改进这些不足:
面向对象程序设计技术汲取了结构忧程序设计中好的思想,并将这些思想与一些新的、强大的理念相结台,从而蛤程序设计工作提供了一种全新的方法。通常,在面向对象的程序设计风
格中,会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。同时会以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型的变量。
2.以下说怯正确的是( )。
A.每个对象内部都有成员函数的实现代码
B.一个类的私有成员函数内部不能访问本类的私有成员变量
C.类的成员函数之间可以互相调用
D.编写一个类时,至少要编写一个成员函数
答案:C
3.以下对类A的定义正确的是( )。
A.class A{ B.class A{
private: int v; int v; A * next;
public: void Func() {} void Func() {}
} };
C.class A{ D. class A{
int v; int v;
public: public:
void Func(); A next;
}; void Func() {}
A::void Func() { } };
答案:B
4.假设有以下类A:
class A{
public:
int func(int a) { return a * a; }
};
以下程序段不正确的是( )。
A.A a; a.func(5);
B.A * p = new A; p->func(5);
C.A a; A&r =a ; r.func(5);
D.A a,b; if(a!=b) a.func(5);
答案:D
5.以下程序段不正确的是(A)。
A.int main() {
class A { int v; }
A a; a.v= 3; return 0;
析构函数的定义 B.int main() {
class A { public: int v; A * p; };
A a; a.p=&a; return 0;
C.int main() {
class A { public: int v; };
A * p = new A;
p-> v =4; delete p;
return 0;
D. im main() {
class A { public: int v; A * p; };
A a: a. p = new A; delete a.p;
return 0;
答案:A
6.实现一个学生信息处理程序。输入:姓名,年龄,学号(整数)。第一学年平均成绩·
第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。输出:姓名,年龄,学号,
4年平均成绩。例如:
输入: Tom 18 7817 80 80 90 70
输出: Tom,18,7817,80
要求实现一个代表学生的类,并非所有成员变量都是私有的。
答案:
#include <iostream>
#include<cstring>
#include<cstdlib>
//#include<cstdio>
using namespace std;
class Student {
private:
int age, score1, score2, score3, score4;
char name[100], num[100];
double average;
public:
Student(char aname[], int aage, char anum[],int ascore1, int ascore2, int ascore3, int ascore4) {
strcpy(name, aname);
age = aage;
strcpy(num, anum);
score1 = ascore1;
score2 = ascore2;
score3 = ascore3;
score4 = ascore4;
}
double getAverage() {
return (score1 + score2 + score3 + score4) / 4;
}
char * getName() {
return name;
}
int getAge() {
return age;
}
char * getNum() {
return num;
}
};
int main() {
char name[100], a, num[100];
int age, score1, score2, score3, score4;
line(name, 100, ' ');
cin >> age;
// a = getchar();
line(num, 100, ' ');
cin >> score1 >> score2 >> score3 >> score4;
Student s(name, age, num, score1, score2, score3, score4);
cout << s.getName() << "," << s.getAge() << "," << s.getNum() << "," << s.getAverage();
return 0;
}
第12章
1.以下说法中正确的是( )。
A. 一个类一定会有无参构造函数
B.构造函数的返回值类型是void
C.一个类只能定义一个析构函数,但可以定义多个构造函数
D.一个类只能定义一个构造函数,但可以定义多个析构函数
答案:C
2.对于强过new运算符牛成的对象( )。
A.程程序结束时自动析构
B.执行delete操作时才能析构
C.在包含new语句的函数返回时自动析构
D.在执行delete操作时会析构,如果没有执行delete操作,则在程序结束时自动析构
答案:D
3.如果某函数的返回值是个对象,则该函数被调用时,返回的对象( )。
A.是通过复制构造函数初始化的
B.是通过无参构造函数初始化的
C.用哪个构造函数初始化取决于函数的return语句是怎么写的
D.不需要初始化
答案:C
4.以下说法LE确的是( )。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论