帮个忙看下C++代码错误

来源:百度知道 编辑:UC知道 时间:2024/06/24 22:35:35
用户输入一个数N代表接下来要输入的日期数量,程序计算每个日期在当年是第几天,然后按顺序输出每个日期在当年是第几天,要是日期不对则输出wrong date。。。我觉得应该是要用对象数组的吧,关于对象数组不太懂,高手指教下这个代码。

#include<iostream>
using namespace std;

class Cdate{
public:
Cdate(int year,int month,int day);
Cdate();
int isleapyear(int year);
bool isrightdate(int year,int month,int day);
int calculate(int year,int month,int day);
void display();
private:
int yy,mm,dd;
}

Cdate::Cdate(int year,int month,int day)
{
yy=year;
mm=month;
dd=day;
}

int Cdate::isleapyear(int year)
{
if(year%400==0||year%100&&year%4==0) return 1;
else return 0;
}

bool Cdate::isrightyear(int year,int month,int day)
{
int run[]={31,29,31,30,31,30,31,31,30,31,30,31};
int pin[]={31,28,31,20,31,30,31,31,30,31,30,31};
switch(isleapyear(year))
{
case 1:if(run[month-1]==day) return 1; else return 0; break;

代码错误很多,编译不通过。不明白为什么你要用对象数组,而且你的用法是错误的。可以用一个Struct保存一个日期的年、月、日,或者所有日期的年月日分3个数组保存。姑且按你的设计改代码如下:

#include<iostream>
using namespace std;

class Cdate{
public:
Cdate(int year,int month,int day);
Cdate();
int isleapyear(int year);
bool isrightdate(int year,int month,int day);
int calculate(int year,int month,int day);
void display();
private:
int yy,mm,dd;
}; // 此处缺少分号

Cdate::Cdate(int year,int month,int day)
{
yy=year;
mm=month;
dd=day;
}

int Cdate::isleapyear(int year)
{
if( year%400==0 || year%100 == 0 &&year%4==0) return 1; //year%100 改为 year%100 == 0
else return 0;
}

bool Cdate::isrightdate(int year,int month,int day) //isrightyear 改为 isrightdate
{
if (year <1) return 0; //新增
if (month <1 || month > 12) return 0; //新增

int run[]={31,29,31,30,31,30,31,31,30,31,30,31};
int