改错题:类中私有成员的访问

改错题:类中私有成员的访问

时间: 1ms        内存:128M

描述:

/*
改错题:
设计一个日期类和时间类,并编写全局函数display用于显示日期和时间。要求:display函数作为类外的普通函数,而不是成员函数
在主函数中调用display函数,display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。
下面的程序中,在begin到end部分存在语法错误。请改正错误,使程序按下面输入输出的规定运行。
注意:只提交修改过的begin到end部分的代码。
*/
#include <iostream>
using namespace std;
//将程序需要的其他成份写在下面,只提交修改后的begin到end部分的代码
//******************** begin ********************
class Time;  //类的提前声明
class Date   //日期类
{
public:  
Date(int y,int m,int d)
       {
               year=y;
month=m;
day=d;
       }
 private:
int year;
int month;
int day;
}; 
class Time  //时间类
{  
public:  
   Time(int h,int m,int s)
   {
        hour=h;
min=m;
sec=s;
   }
 private:
int hour;
int min;
int sec;
}; 
void display(const Date & d, const Time & t)
{
    cout<<d.year<<"/"<<d.month<<"/"<<d.day<<endl;
cout<<t.hour<<":"<<t.min<<":"<<t.sec<<endl;   
}
//********************* end ********************
int main()
{
    void display(const Date &,const Time &);
    int year,month,day;
    cin>>year>>month>>day;
    Date d1(year,month,day);
    int hour,minute,second;
    cin>>hour>>minute>>second;
    Time t1(hour,minute,second);
    display(d1,t1);
    return 0;
}

输入:

年      月       日

时      分       秒

输出:

年/月/日

时:分:秒

示例输入:

2013  12   23
14   23   50

示例输出:

2013/12/23
14:23:50

提示:

参考答案(内存最优[1092]):

#include<stdio.h>
int main()
{
    int year,month,day,hour,minute,scend;
    scanf("%d%d%d\n%d%d%d",&year,&month,&day,&hour,&minute,&scend);
    printf("%d/%d/%d\n%d:%d:%d",year,month,day,hour,minute,scend);
    return 0;
}

参考答案(时间最优[0]):

#include <iostream>
#include<string.h>
using namespace std;
class join_Army
{
public:
    join_Army() {}
    join_Army(int y,int m,int d):join_year(y),join_month(m),join_day(d) {}
    friend ostream& operator<<(ostream& out,join_Army &a);
private:
    int join_year;
    int join_month;
    int join_day;
};
ostream& operator<<(ostream& out,join_Army &a)
{
    out<<"join_time:"<<a.join_year<<"-"<<a.join_month<<"-"<<a.join_day<<endl;
    return out;
}
class soider
{
public:
    soider() {}
    soider(join_Army t,char A_g[],char s_t[]):join_time(t)
    {
        strcpy(Army_Garrison,A_g);
        strcpy(soider_type,s_t);
    }
    friend ostream& operator<<(ostream& out,soider &a) ;
private:
    join_Army join_time;
    char Army_Garrison[20];
    char soider_type[10];
};
ostream& operator<<(ostream& out,soider &a)
{
    out<<a.join_time;
    out<<"Army_Garrison:"<<a.Army_Garrison<<endl;
    out<<"soider_type:"<<a.soider_type<<endl;
    return out;
}
int main()
{

    int y,m,d;
    char a_g[20],s_t[20];
    cin>>y>>m>>d;
    join_Army time(y,m,d);
    cin>>a_g>>s_t;
    soider so(time,a_g,s_t);
    cout<<so<<endl;
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞