zoukankan      html  css  js  c++  java
  • C++第三章课后作业答案及解析---指针的使用

    今天继续完成上周没有完成的习题---C++第三章课后作业,本章题涉及指针的使用,有指向对象的指针做函数参数,对象的引用以及友元类的使用方法等

    它们具体的使用方法在下面的题目中会有具体的解析(解析标注在代码中)。

    题目:

    1.建立一个对象数组,内放5个学生数据(学号,成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

     1 #include <iostream>
     2 #include<stdlib.h>
     3 using namespace std;
     4 class Student
     5  {public:
     6 //定义学生数据函数
     7    Student(int n,float s):num(n),score(s){}
     8    int num;
     9    float score;
    10  };
    11 
    12 void main()
    13 {
    14     //构建五个学生数据信息
    15     Student stud[5]={
    16     Student(101,78.5),Student(102,85.5),Student(103,98.5),
    17     Student(104,100.0),Student(105,95.5)};
    18     void max(Student* );//定义max函数
    19     Student *p=&stud[0];//p指向数组第一个元素,p为实参,arr为形参
    20     max(p);//调用函数,找到学生中成绩最高者,并输出其学号
    21  }
    22  //构建max函数,用指向对象(学生)的指针作函数的参数
    23 void max(Student *arr)
    24 {    //假设学号为1的学生成绩最高
    25     float max_score=arr[0].score;
    26     int k=0;
    27     //通过循环,逐个比较学生的成绩,直到查询完所有学生成绩,并返回最大值
    28     for(int i=1;i<5;i++)
    29     {
    30         if(arr[i].score>max_score) 
    31         {
    32             max_score=arr[i].score;
    33             k=i;
    34         }
    35     }
    36 //打印出成绩最大的学生的学号和成绩        
    37  cout<<arr[k].num<<" "<<max_score<<endl;
    38  system("pause");
    39 }

    2.修改第6题的程序,增加一个fun函数,改写main函数。改为在fun函数中调用change和display函数。在fun函数中使用对象的引用(Student &)作为形参。

     1  #include<iostream>
     2  #include<stdlib.h>
     3  using namespace std;
     4  class Student
     5  {
     6  public:
     7     //学生数据的构造函数
     8     Student(int n,float s):num(n),score(s){}
     9     //修改学生成绩的函数
    10     void change(int n,float s){num = n;score = s;}
    11     //输出学生成绩和学号的函数
    12     void display(){cout<<num<<" "<<score<<endl;}
    13  private:
    14     int num;
    15     float score;
    16 };
    17 //在fun函数中使用对象的引用(Student & stud)作为形参
    18  void fun (Student & stud){  
    19      cout<<"修改前的学生数据信息"<<endl;
    20      stud.display(); 
    21      //调用change函数进行对学生数据信息的修改
    22      stud.change(101, 80.5);
    23      cout<<"修改后的学生数据信息"<<endl;
    24      stud.display();
    25  }
    26  int main()
    27  {
    28     //定义一个学生数据信息
    29     Student stud(101, 78.5); 
    30     //调用fun函数
    31     fun(stud);
    32     system("pause");
    33     return 0;
    34      
    35     
    36  }

    3.将例3.13中的Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据,输出年,月,日和时,分,秒。

     1 #include <iostream>
     2 #include<stdlib.h>
     3 using namespace std;
     4 //声明Time,因为在Date中提前使用
     5 class Time;
     6 class Date{
     7 public:
     8     Date(int,int,int);
     9     //将Time类声明为Date类的友元类
    10     friend Time;
    11 private:
    12     int month;
    13     int day;
    14     int year;
    15 };
    16 //Date函数
    17 Date::Date(int y,int m,int d):year(y),month(m),day(d){ }
    18 class Time{
    19 public:
    20     Time(int,int,int);
    21     void display(const Date &);
    22 private:
    23     int hour;
    24     int minute;
    25     int sec;
    26 };
    27 //Time函数
    28 Time::Time(int h,int m,int s):hour(h),minute(m),sec(s){ }
    29 //display函数
    30 void Time::display(const Date &d){
    31     //引用Date类中的私有数据
    32     cout<<d.year<<"/"<<d.month<<"/"<<d.day<<endl;
    33     //引用本类中的私有数据
    34     cout<<hour<<":"<<minute<<":"<<sec<<endl;}
    35 int main(){
    36     Time t1(17,15,50);
    37     Date d1(2019,10,28);
    38     //通过Time类中的display函数引用Date类对象的私有数据
    39     t1.display(d1);
    40     system("pause");
    41     return 0;
    42 }

    小结:

      指针在编程学习过程中,是非常复杂的,必须非常明了其中的逻辑指向,才能更好的运用指针解决问题。C语言的指针使用非常广泛,但C++涉及的指针内容不多,主要为指针指向数组指定元素,指针指向函数,用指向对象的指针做函数参数几种。明确指针的指向和指针的取值,指针部分的学习就不难了。

  • 相关阅读:
    在Ubuntu上安装PHPStudy组件
    手把手教你在Ubuntu上分别安装Nginx、PHP和Mysql
    ErrorKiller:Failed to decode response: zlib_decode(): data error
    HTTP和FTP上传文件的区别
    关于HTTP,你知道哪些?
    史上最全的FTP网址
    深入解读TCP/IP
    nefu 462 fib组合
    MZL's xor
    The Highest Mark(01背包)
  • 原文地址:https://www.cnblogs.com/chenting123456789/p/11754197.html
Copyright © 2011-2022 走看看