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

进入正题!!!

题目:

2.分析下面的程序,写出其运行时的输出结果

这里就不展示课本源代码,直接给出修改后的代码,错误部分代码已给出具体的注释

  1. #include<iostream>
  2. //原题的#include<iostream.h>写法错误
  3. #include<stdlib.h>
  4. //用于解决闪屏的头文件
    using namespace std;
  1. //原题缺少该行代码,用于输入cin和输出cout
  2. class Date{
  3. public:
  4. Date(int,int,int);
  5. Date(int,int);
  6. Date(int);
  7. Date();
  8.  
  9. void display();
  10. private:
  11. int month;
  12. int day;
  13. int year;
  14.  
  15. };
  16.  
  17. Date::Date(int m,int d,int y):month(m),day(d),year(y){}
  18.  
  19. Date::Date(int m,int d):month(m),day(d)
  20. {year=;}
  21.  
  22. Date::Date(int m):month(m)
  23. {day=;year=;}
  24.  
  25. Date::Date()
  26. {month=;day=;year=;}
  27.  
  28. void Date::display()
  29. {
  30. cout<<month<<"/"<<day<<"/"<<year<<endl;
  31. }
  32.  
  33. int main()
  34. {
  35. Date d1(,,);
  36. Date d2(,);
  37. Date d3();
  38. Date d4;
  39. d1.display();
  40. d2.display();
  41. d3.display();
  42. d4.display();
  43. system("pause");
  44. //解决闪屏的代码
  45. return ;
  46. }

运行结果:

3.如果将第2题中程序的第四行改为用默认参数,即

Date(int =1,int =1,int =2005);

分析程序有无问题。上机编译,分析出错信息,修改程序使之能通过编译。要求保留上面一行给出的构造函数,同时能输出与第2 题程序相同的输出结果。

解析:在第2题的代码上进行修改。

错误点:

修改错误,编译成功的代码:

  1. #include<iostream>
  2. //原题的#include<iostream.h>写法错误
  3. #include<stdlib.h>
  4. //用于解决闪屏的头文件
  5. using namespace std;
  6. //原题缺少该行代码,用于输入cin和输出cout
  7. class Date{
  8. public:
  9. Date(int x=,int y=,int z=);
  10. Date(int,int);
  11. Date(int);
  12. Date();
  13.  
  14. void display();
  15. private:
  16. int month;
  17. int day;
  18. int year;
  19.  
  20. };
  21.  
  22. Date::Date(int m,int d,int y):month(m),day(d),year(y){}
  23.  
  24. Date::Date(int m,int d):month(m),day(d)
  25. {year=;}
  26.  
  27. Date::Date(int m):month(m)
  28. {day=;year=;}
  29.  
  30. Date::Date()
  31. {month=;day=;year=;}
  32.  
  33. void Date::display()
  34. {
  35. cout<<month<<"/"<<day<<"/"<<year<<endl;
  36. }
  37.  
  38. int main()
  39. {
  40. Date d1(,,);
  41. Date d2(,,);
  42. Date d3(,,);
  43. Date d4(,,);
  44. d1.display();
  45. d2.display();
  46. d3.display();
  47. d4.display();
  48. system("pause");
  49. //解决闪屏的代码
  50. return ;
  51. }

运行结果:

使用该错误修改方法,实际上就只有一个构造函数起作用,注释其它三个构造函数,输出结果不变,调用原理是多次调用同一个函数,而不是分别调用各自的构造函数。

源代码:

  1. #include<iostream>
  2. //原题的#include<iostream.h>写法错误
  3. #include<stdlib.h>
  4. //用于解决闪屏的头文件
  5. using namespace std;
  6. //原题缺少该行代码,用于输入cin和输出cout
  7. class Date{
  8. public:
  9. Date(int x=,int y=,int z=);
  10. void display();
  11. private:
  12. int month;
  13. int day;
  14. int year;
  15.  
  16. };
  17.  
  18. Date::Date(int m,int d,int y):month(m),day(d),year(y){}
  19.  
  20. void Date::display()
  21. {
  22. cout<<month<<"/"<<day<<"/"<<year<<endl;
  23. }
  24.  
  25. int main()
  26. {
  27. Date d1(,,);
  28. Date d2(,,);
  29. Date d3(,,);
  30. Date d4(,,);
  31. d1.display();
  32. d2.display();
  33. d3.display();
  34. d4.display();
  35. system("pause");
  36. //解决闪屏的代码
  37. return ;
  38. }

4.建立一个对象数组,内放5个学生的数据(学号,成绩),用指针指向数组首元素,输出1,3,5个学生的数据。

源代码及解析:

  1. #include<iostream>
  2. #include<stdlib.h>
  3. using namespace std;
  4. class Student
  5. {
  6. public:
  7. //学生数据的构造函数
  8. Student(int sno,int grade):Sno(sno),Grade(grade){}
  9. void display();
  10. int Sno;
  11. int Grade;
  12. };
  13.  
  14. void Student::display()
  15. {
  16. cout<<Sno<<' '<<Grade<<endl;
  17. }
  18.  
  19. int main()
  20. {
  21. //五个学生的数据信息
  22. Student stu[]={
  23. Student(,),
  24. Student(,),
  25. Student(,),
  26. Student(,),
  27. Student(,),
  28. };
  29. //定义指针
  30. void(Student::*p1)();
  31. p1=&Student::display;
  32. //调用函数
  33. (stu[].*p1)();
  34. (stu[].*p1)();
  35. (stu[].*p1)();
  36. system("pause");
  37. return ;
  38.  
  39. }

运行结果:

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. java File源码理解,探索File路径

    1.方法: new File(path); 我们知道根据输入的路径path的不同 ,File可以根据path的不同格式,来访问文件.那么,path的形式有几种呢? 根据源码 可以知道,输入的路径pat ...

  2. Spring MVC 问题归纳

    记录一些在Spring MVC配置中出现的问题 一.配置tomcat包没有加载 错误: idea调试web项目时出现:java.lang.ClassNotFoundException:org.spri ...

  3. json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (ch

    阐述 想要把一个字符串转化成字典对象,在使用json的过程出现如此报错 解决方法 将字符串里面的单引号改为双引号

  4. CORS和CSRF

    CORS和CSRF 什么是CORS?CORS是一个W3C标准,全称是"跨域资源共享",他允许浏览器向夸源服务器,发出XMLHTTPRequest请求,从而克服了AJAX只能同源使用 ...

  5. day41——数值类型、完整性约束

    day41 数值类型 整数类型 有符号的设置 mysql> create table t1(id tinyint); # 默认有符号,即数字前有正负号 无符号的设置 mysql> crea ...

  6. Go语言 ( 切片)

    本文主要介绍Go语言中切片(slice)及它的基本使用. 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x []int) in ...

  7. Go语言( 运算符)

    运算符用于在程序运行时执行数学或逻辑运算. 运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算数运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相 ...

  8. jwt 0.9.0(一)推荐jwt理由

    本人一直有良好的写技术博文的习惯,最近研究 jwt 有点点心得,赶紧记下来. 我推荐使用jwt(Json Web Token)这种客户端存储状态方式,代替传统的服务端存储状态方式(比如redis存储s ...

  9. AES不同语言加密解密

    AES加密模式和填充方式:还有其他 算法/模式/填充 16字节加密后数据长度 不满16字节加密后长度 AES/CBC/NoPadding 16 不支持 AES/CBC/PKCS5Padding 32 ...

  10. Spring Spring boot 获取IOC中的bean,ApplicationContext

    https://blog.csdn.net/weixin_38361347/article/details/89304414 https://www.jianshu.com/p/9ea13b00b1d ...