C++-课后习题-日期类DATE时间类Time

#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <ctype.h>
#include <string.h>

using namespace std;

char* itoa(int num,char* str,int radix)
{/*索引表*/
    char index[]="0123456789ABCDEF";
    unsigned unum;/*中间变量*/
    int i=0,j,k;
    /*确定unum的值*/
    if(radix==10&&num<0)/*十进制负数*/
    {
        unum=(unsigned)-num;
        str[i++]='-';
    }
    else unum=(unsigned)num;/*其他情况*/
    /*转换*/
    do{
        str[i++]=index[unum%(unsigned)radix];
        unum/=radix;
       }while(unum);
    str[i]='';
    /*逆序*/
    if(str[0]=='-')
        k=1;/*十进制负数*/
    else
        k=0;
     
    for(j=k;j<=(i-1)/2;j++)
    {       char temp;
        temp=str[j];
        str[j]=str[i-1+k-j];
        str[i-1+k-j]=temp;
    }
    return str;
}

class Time
{
private:
    int Hour,Minute,Second;
public:
    Time(int h=0,int m=0,int s=0)
    {Hour=h;Minute=m;Second=s;}
    void SetTime(int,int,int);
    void GetTime(char *);
};

void Time::SetTime(int h,int m,int s)
{Hour=h;Minute=m;Second=s;}

void Time::GetTime(char *Time)
{
    char h[4],m[2],s[2];
    itoa(Hour,h,10);
    itoa(Minute,m,10);
    itoa(Second,s,10);
    Time=h;
    strcat(Time,":");
    strcat(Time,m);
    strcat(Time,":");
    strcat(Time,s);
}
class Date
{
private:
    int Year,Month,Day;
public:
    Date(int y=2020,int m=1,int d=1)
    {Year=y;Month=m;Day=d;}
    void SetDate(int,int,int);
    void GetDate(char *);
};

void Date::SetDate(int y, int m, int d)
{Year=y;Month=m;Day=d;}

void Date::GetDate(char *Date)
{
    char y[4],mo[2],d[2];
    itoa(Year,y,10);
    itoa(Month,mo,10);
    itoa(Day,d,10);
    Date=y;
    strcat(Date,"/");
    strcat(Date,mo);
    strcat(Date,"/");
    strcat(Date,d);
    
}
class DateTime:public Date,public Time
{
public:
    DateTime(int y,int m,int d,int h,int mi,int s):Date(y,m,d),Time(h,mi,s){}
    
    void SetDateTime(int y,int m,int d,int h,int mi,int s)
    {
        SetDate(y,m,d);
        SetTime(h,mi,s);
    }
    void GetDateTime(char *dt)
    {
        char *Time = nullptr,*Date = nullptr;
        GetTime(Time);
        GetDate(Date);
        strcat(Date,"  ");
        strcat(Date,Time);
    }
};

int main()
{
    char *dt = nullptr;
    DateTime a(2020,05,01,12,00,00);
    a.GetDateTime(dt);
    printf("%s",dt);
}

讨论:(可在此讨论本题中遇到的问题和解决思路)

1.如何把整型转换为字符串

解决方法:使用itoa实现

2.itoa在Xcode无法使用

3.datatime的构造函数仅传递参数?

4.报错:Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

 

 

原文地址:https://www.cnblogs.com/loglian/p/12880374.html