新标准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小时内删除。