C++面向对象程序设计第三章习题答案解析
整理一下自己写的作业,供考试前复习用,哈哈
进入正题!!!
题目:
2.分析下面的程序,写出其运行时的输出结果
这里就不展示课本源代码,直接给出修改后的代码,错误部分代码已给出具体的注释
#include<iostream>
//原题的#include<iostream.h>写法错误
#include<stdlib.h>
//用于解决闪屏的头文件
using namespace std;
//原题缺少该行代码,用于输入cin和输出cout
class Date{
public:
Date(int,int,int);
Date(int,int);
Date(int);
Date(); void display();
private:
int month;
int day;
int year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y){} Date::Date(int m,int d):month(m),day(d)
{year=;} Date::Date(int m):month(m)
{day=;year=;} Date::Date()
{month=;day=;year=;} void Date::display()
{
cout<<month<<"/"<<day<<"/"<<year<<endl;
} int main()
{
Date d1(,,);
Date d2(,);
Date d3();
Date d4;
d1.display();
d2.display();
d3.display();
d4.display();
system("pause");
//解决闪屏的代码
return ;
}
运行结果:
3.如果将第2题中程序的第四行改为用默认参数,即
Date(int =1,int =1,int =2005);
分析程序有无问题。上机编译,分析出错信息,修改程序使之能通过编译。要求保留上面一行给出的构造函数,同时能输出与第2 题程序相同的输出结果。
解析:在第2题的代码上进行修改。
错误点:
修改错误,编译成功的代码:
#include<iostream>
//原题的#include<iostream.h>写法错误
#include<stdlib.h>
//用于解决闪屏的头文件
using namespace std;
//原题缺少该行代码,用于输入cin和输出cout
class Date{
public:
Date(int x=,int y=,int z=);
Date(int,int);
Date(int);
Date(); void display();
private:
int month;
int day;
int year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y){} Date::Date(int m,int d):month(m),day(d)
{year=;} Date::Date(int m):month(m)
{day=;year=;} Date::Date()
{month=;day=;year=;} void Date::display()
{
cout<<month<<"/"<<day<<"/"<<year<<endl;
} int main()
{
Date d1(,,);
Date d2(,,);
Date d3(,,);
Date d4(,,);
d1.display();
d2.display();
d3.display();
d4.display();
system("pause");
//解决闪屏的代码
return ;
}
运行结果:
使用该错误修改方法,实际上就只有一个构造函数起作用,注释其它三个构造函数,输出结果不变,调用原理是多次调用同一个函数,而不是分别调用各自的构造函数。
源代码:
#include<iostream>
//原题的#include<iostream.h>写法错误
#include<stdlib.h>
//用于解决闪屏的头文件
using namespace std;
//原题缺少该行代码,用于输入cin和输出cout
class Date{
public:
Date(int x=,int y=,int z=);
void display();
private:
int month;
int day;
int year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y){} void Date::display()
{
cout<<month<<"/"<<day<<"/"<<year<<endl;
} int main()
{
Date d1(,,);
Date d2(,,);
Date d3(,,);
Date d4(,,);
d1.display();
d2.display();
d3.display();
d4.display();
system("pause");
//解决闪屏的代码
return ;
}
4.建立一个对象数组,内放5个学生的数据(学号,成绩),用指针指向数组首元素,输出1,3,5个学生的数据。
源代码及解析:
#include<iostream>
#include<stdlib.h>
using namespace std;
class Student
{
public:
//学生数据的构造函数
Student(int sno,int grade):Sno(sno),Grade(grade){}
void display();
int Sno;
int Grade;
}; void Student::display()
{
cout<<Sno<<' '<<Grade<<endl;
} int main()
{
//五个学生的数据信息
Student stu[]={
Student(,),
Student(,),
Student(,),
Student(,),
Student(,),
};
//定义指针
void(Student::*p1)();
p1=&Student::display;
//调用函数
(stu[].*p1)();
(stu[].*p1)();
(stu[].*p1)();
system("pause");
return ; }
运行结果:
C++面向对象程序设计第三章习题答案解析的更多相关文章
- Reinforcement Learning by Sutton 第三章习题答案
好不容易写完了 想看全部的欢迎点击下面的github https://github.com/LyWangPX/Solutions-of-Reinforcement-Learning-An-Introd ...
- Java面向对象程序设计第9章1-9
Java面向对象程序设计第9章1-9 1. 线程和进程的联系和区别是什么? 联系: 一个进程可以包括多个线程. 区别: 进程: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统 ...
- 统计学习导论:基于R应用——第三章习题
第三章习题 部分证明题未给出答案 1. 表3.4中,零假设是指三种形式的广告对TV的销量没什么影响.而电视广告和收音机广告的P值小说明,原假设是错的,也就是电视广告和收音机广告均对TV的销量有影响:报 ...
- Java面向对象程序设计第14章3-8和第15章6
Java面向对象程序设计第14章3-8和第15章6 3.完成下面方法中的代码,要求建立一个缓冲区,将字节输入流中的内容转为字符串. import java.io.*; public class tes ...
- Java面向对象程序设计第8章3-5
Java面向对象程序设计第8章3-5 3.String类型有什么特点? 一旦赋值,便不能更改其指向的字符对象 如果更改,则会指向一个新的字符对象 不能为null 4.String什么时候进行值比较,什 ...
- Java面向对象程序设计第7章1-8
Java面向对象程序设计第7章1-8 1."程序中凡是可能出现异常的地方必须进行捕获或拋出",这句话对吗? 不对. 异常分两类,runtime异常和非runtime异常. runt ...
- PythonCrashCourse 第三章习题
PythonCrashCourse 第三章习题 3.1 将一些朋友的姓名存储在一个列表中,并将其命名为names.依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来 names = ['lih ...
- C++面向程序设计(第二版)课后习题答案解析
最近没什么心情整理零散的知识点,就整理一下第四章的课后习题答案. 1.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算.将运算符函数重载为非成员函数,非友元的普通函数.编程序, ...
- 周志华-机器学习西瓜书-第三章习题3.5 LDA
本文为周志华机器学习西瓜书第三章课后习题3.5答案,编程实现线性判别分析LDA,数据集为书本第89页的数据 首先介绍LDA算法流程: LDA的一个手工计算数学实例: 课后习题的代码: # coding ...
随机推荐
- QML CheckBox的使用
"人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想. -- 爱献生" 这个在QT creator 帮助文档中非常容易查到. Import Statement: impor ...
- springcloud学习的坑
一:启动Euerka作为提供者或者消费者时,启动失败报:Process finished with exit code 0 Unregistering application EUREKA-SERVI ...
- Linux学习-IP设置
网卡命名规则 CENTOS6的网卡命名方式:它会根据情况有所改变而非唯一且固定,在CENTOS6之前,网络接口使用连续号码命名: eth0. eth1等,当增加或删除网卡时,名称可能会发生变化 CEN ...
- Ant Design Vue select下拉列表设置默认值
在项目中需要为Ant Design Vue 的 select 组件设置一个默认值,如下图所示的状态下拉选择框,默认选择全部 代码如下: <a-select v-model="query ...
- Django 修改该项目文件夹、项目名及项目文件夹中同名文件夹,报错 ModuleNotFoundError: No module named 'untitled'
如果你直接重构项目文件夹名及重构项目名和重构项目文件夹内同名文件夹 执行项目报错 ModuleNotFoundError: No module named 'untitled' 请执行以下操作
- python中将已有链接的视频进行下载
使用python爬取视频网站时,会得到一系列的视频链接,比如MP4文件.得到视频文件之后需要对视频进行下载,本文写出下载视频文件的函数. 首先导入requests库,安装库使用pip install ...
- AVR单片机教程——拨动开关
在按键的上方有4个拨动开关.开关与按键,在原理和使用方法上都是很类似的,但有不同的用途——按键按下后松开就会弹起,而开关可以保存其状态. <switch.h> 定义了与开关相关的函数.sw ...
- MySQL运维中的Tips--持续更新
1.into outfile 生成sql:一般都是生成文本或者其他形式的文件,现在需要生成sql形式的文件.配置文件加secure_file_priv=''select concat('insert ...
- SQL 向表中添加字段
如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识. 通用式: alter table [表名] add [字段名] 字段属 ...
- 排Bug技巧
排Bug技巧 什么是Bug? Bug一词的英文原意是"臭虫"或"虫子".但是现在,在电脑系统或游戏程序中,如果隐藏着的一些未被发现的缺陷或问题,可被人利用,人们 ...