整理一下自己写的作业,供考试前复习用,哈哈

进入正题!!!

题目:

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++面向对象程序设计第三章习题答案解析的更多相关文章

  1. Reinforcement Learning by Sutton 第三章习题答案

    好不容易写完了 想看全部的欢迎点击下面的github https://github.com/LyWangPX/Solutions-of-Reinforcement-Learning-An-Introd ...

  2. Java面向对象程序设计第9章1-9

    Java面向对象程序设计第9章1-9 1. 线程和进程的联系和区别是什么? 联系: 一个进程可以包括多个线程. 区别: 进程: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统 ...

  3. 统计学习导论:基于R应用——第三章习题

    第三章习题 部分证明题未给出答案 1. 表3.4中,零假设是指三种形式的广告对TV的销量没什么影响.而电视广告和收音机广告的P值小说明,原假设是错的,也就是电视广告和收音机广告均对TV的销量有影响:报 ...

  4. Java面向对象程序设计第14章3-8和第15章6

    Java面向对象程序设计第14章3-8和第15章6 3.完成下面方法中的代码,要求建立一个缓冲区,将字节输入流中的内容转为字符串. import java.io.*; public class tes ...

  5. Java面向对象程序设计第8章3-5

    Java面向对象程序设计第8章3-5 3.String类型有什么特点? 一旦赋值,便不能更改其指向的字符对象 如果更改,则会指向一个新的字符对象 不能为null 4.String什么时候进行值比较,什 ...

  6. Java面向对象程序设计第7章1-8

    Java面向对象程序设计第7章1-8 1."程序中凡是可能出现异常的地方必须进行捕获或拋出",这句话对吗? 不对. 异常分两类,runtime异常和非runtime异常. runt ...

  7. PythonCrashCourse 第三章习题

    PythonCrashCourse 第三章习题 3.1 将一些朋友的姓名存储在一个列表中,并将其命名为names.依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来 names = ['lih ...

  8. C++面向程序设计(第二版)课后习题答案解析

    最近没什么心情整理零散的知识点,就整理一下第四章的课后习题答案. 1.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算.将运算符函数重载为非成员函数,非友元的普通函数.编程序, ...

  9. 周志华-机器学习西瓜书-第三章习题3.5 LDA

    本文为周志华机器学习西瓜书第三章课后习题3.5答案,编程实现线性判别分析LDA,数据集为书本第89页的数据 首先介绍LDA算法流程: LDA的一个手工计算数学实例: 课后习题的代码: # coding ...

随机推荐

  1. Zabbix案例实践|Zabbix屏蔽告警

    近期项目中,客户要求在凌晨00:00到02:00的CPU屏蔽虚拟化监控上ESXI的红色告警,红色告警是由于某台vmCPU利用率过高而产生的.做法如下:1. 找到红色告警的触发器,通过触发器找到监控项, ...

  2. python3检测ossfs可用性+钉钉通知

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-12-02 15:16 # @Author : Anthony # @Emai ...

  3. xorm-Iterate/Count/Rows方法实例

    package main import ( "fmt" _ "github.com/go-sql-driver/mysql" "github.com/ ...

  4. appium实例1:启动淘宝app

      1.在android-sdk里面双击SDK-manager,下载buidl-tools 2.勾选build-tools,随便选一个版本,我这里选的是24的版本 3.下载完成后,在D:\androi ...

  5. Docker3-Dockerfile创建镜像的方法(推荐docker file这种方法)

    一.镜像制作的方法 1.本地导入导出镜像 请参考:Docker 架构原理及简单使用 导出:docker save nginx >/tmp/nginx.tar.gz 导入:docker load ...

  6. node.js开发 1-概述

    https://www.cnblogs.com/gaoya666/p/9071288.html Nodejs英文网:https://nodejs.org/en/ 中文网:http://nodejs.c ...

  7. 5_PHP数组_3_数组处理函数及其应用_4_数组和变量间的转换函数

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 数组和变量间的转换函数 1. list() 语言结构 程序: <?php $info = array('co ...

  8. stack + positioned

    stack 下套container, 发现最大的显示,小的都没显示, 把所有都套个POSITIONED, 都正常显示了.

  9. php后台实现页面跳转的方法-转载

    地址:http://blog.csdn.net/abandonship/article/details/6459104 其中方法三的js代码在tp框架使用存在故障,一个是需要把代码写在一起(可能也不需 ...

  10. 初始SQL语句 简单使用

    初始SQL语句 简单使用 SQL语言共分为四大类: DQL (Data QueryLanguage )数据查询语言 DML(Data manipulation language)数据操纵语言 DDL( ...