一个十几行的代码,帮忙改一下,顺便注释一下,两个帖子分数都给他!

kaihongmail 2009-05-09 09:04:04
显示星期几的一个程序,谢谢啦:

#include <iostream>
#include <string>
using namespace std;
class Date{
public:
void init(int,int,int);
void weekDay(Date d);
void print();

private:
int y;
int m;
int d;
int week;
};
void Date::init(int year,int month,int day)
{
y=year;
m=month;
d=day;
};
void Date::weekDay(Date d)
{
y=y%100;
if(m==1) {m=13;y=y-1;}
else
if(m==2) {m=14;y=y-1;}
week=(26*(m+1)/10+y+y/4-2*y/100+y/400+d-1)%7;
}
void Date::print()
{
cout < <y < <"年" < <m < <"月" < <d < <"日" < <endl;
cout < <"今天是星期" < <week < <endl;
};
int main()
{
Date d;
d.init(2009,5,12);
d.print();
return 0;
}
...全文
180 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheneyjiang 2009-05-10
  • 打赏
  • 举报
回复
答案在3楼,不过对于初始化我建议你参看9楼的!9楼的做法更有效率
zhangzhongke007 2009-05-10
  • 打赏
  • 举报
回复
学到了很多!
Rain_yun 2009-05-10
  • 打赏
  • 举报
回复
里面<<用的不对吧
fellatioyzx 2009-05-09
  • 打赏
  • 举报
回复
纯学习
freestyIe 2009-05-09
  • 打赏
  • 举报
回复
3楼正确
hw324306893 2009-05-09
  • 打赏
  • 举报
回复
3楼OK
lingyin55 2009-05-09
  • 打赏
  • 举报
回复
运行结果,数据也改好了,看看吧

2009年5月12日
今天是星期tuesday
请按任意键继续. . .


#include <iostream>
#include <string>
using namespace std;

const char *name[] = { "monday",//////定义一个数组,用于显示星期几
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
};


class Date{
public:
void init(int,int,int);
void weekDay();
void print();

private:
int y;
int m;
int d;
int week;
};
void Date::init(int year,int month,int day) ///////初始化年月日
{
y=year;
m=month;
d=day;
weekDay();//////根据初始化的年月日计算星期几
};
void Date::weekDay() ///////////计算星期的实现
{
if ((m == 1) || (m == 2)){
m += 12;
y--;
}

week = (d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7;
}
void Date::print() ///////////////打印
{
cout <<y <<"年" <<m <<"月" <<d <<"日" <<endl;
cout <<"今天是星期" <<name[week] <<endl;
};
int main()
{
Date d; ///////////定义类对象
d.init(2009,5,12); ////////////初始化
d.print(); ////////////打印
return 0;
}


amossavez 2009-05-09
  • 打赏
  • 举报
回复
怎么发了两个帖子了??、
hack310 2009-05-09
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;
class Date{
public:
void init(int,int,int);
void weekDay(int d); /*这里将Data改为int,因为你这里传入的d是private里的“int d;”,而不是main里的Data类的对象d.当然函数声明里面可以没有参数名,而只有类型int */
void print();

private:
int y;
int m;
int d;
int week;
};
void Date::init(int year,int month,int day)
{
y=year;
m=month;
d=day;
};
void Date::weekDay(int d) //理由同上
{
y=y%100;
if(m==1) {m=13;y=y-1;}
else
if(m==2) {m=14;y=y-1;}
week=(26*(m+1)/10+y+y/4-2*y/100+y/400+d-1)%7;
}
void Date::print()
{
cout <<y <<"年" <<m <<"月" <<d <<"日" <<endl; //这里的<<符号之间没有空格
cout <<"今天是星期" <<week <<endl; //这里的<<符号之间没有空格
};
int main()
{
Date d;
d.init(2009,5,12);
d.weekDay(12);//这里需要调用weekDay函数来计算一下week的值
d.print();
return 0;
}
hjjdebug 2009-05-09
  • 打赏
  • 举报
回复
给一个参考代码,改动见注释

#include <iostream>
#include <string>
using namespace std;
class Date{
public:
Date():y(0),m(0),d(0),week(0){};
Date(int year,int month,int day);
void print();

private:
void weekDay(void);
int y;
int m;
int d;
int week;
};
Date::Date(int year,int month,int day) // 建立构造函数,舍弃init
{
y=year;
m=month;
d=day;
weekDay(); //计算week
};
void Date::weekDay() // 不保证正确性,正确性由你自己完成
{
int v;
v=y%100;
if(m==1) {m=13;y=y-1;}
else
if(m==2) {m=14;y=y-1;}
week=(26*(m+1)/10+y+y/4-2*y/100+y/400+d-1)%7;
}
void Date::print()
{
cout <<y <<"年" <<m <<"月" <<d <<"日" <<endl;
cout <<"今天是星期" <<week <<endl;
};
int main()
{
Date d(2009,5,12); //初始化用构造完成,计算星期天由内部完成
d.print();
system("pause");
return 0;
}

  • 打赏
  • 举报
回复

[code=C/C++]
class Date{
public:
void init(int,int,int);
void weekDay(); //这里不需要Date d形参
void print();

private:
int y;
int m;
int d;
int week;
};
void Date::init(int year,int month,int day)
{
y=year;
m=month;
d=day;
};
void Date::weekDay()
{
y=y%100;
if(m==1) {m=13;y=y-1;}
else
if(m==2) {m=14;y=y-1;}
week=(26*(m+1)/10+y+y/4-2*y/100+y/400+d-1)%7;
}
void Date::print()
{
cout <<y <<"年" <<m <<"月" <<d <<"日" <<endl;
cout <<"今天是星期" <<week <<endl;
};
int main()
{
Date d;
d.init(2009,5,12);
d.print();
return 0;
}


[/code]
acdbxzyw 2009-05-09
  • 打赏
  • 举报
回复
void Date::weekDay(Date date)
{
int y = date.y,m=date.m;d=date.d;
y=y%100;
if(m==1) {m=13;y=y-1;}
else
if(m==2) {m=14;y=y-1;}
week=(26*(m+1)/10+y+y/4-2*y/100+y/400+d-1)%7;
}


再考虑修改。
lzh9955 2009-05-09
  • 打赏
  • 举报
回复
学习!
liwenbo29 2009-05-09
  • 打赏
  • 举报
回复
除了 将weekDay(Data d) 中的Data d 去掉外 还要在void Date::init(int year,int month,int day) 初始化weekDay()
如:
void Date::init(int year,int month,int day)
{
y=year;
m=month;
d=day;
weekDay();
};
mengde007 2009-05-09
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

class date
{
public:
void init(int,int,int);
void weekday(); //Date d参数无用;
void print();

private:
int y;
int m;
int d;
int week;
};

void date::init(int year,int month,int day)
{
y=year;
m=month;
d=day;
}

void date::weekday() //Date d一样;
{
y=y%100;
if(m==1) {m=13;y=y-1;}
else if
(m==2) {m=14;y=y-1;}
week=(26*(m+1)/10+y+y/4-2*y/100+y/400+d-1)%7;
}

void date::print()
{
cout <<y <<"年" <<m <<"月" <<d <<"日" <<endl;
cout <<"今天是星期" <<week <<endl;
}

int main()
{

date d;
d.init(2009,5,12);
d.weekday();
d.print();
return 0;

}
kaihongmail 2009-05-09
  • 打赏
  • 举报
回复
只要帮忙这个帖子的分也给他:


http://topic.csdn.net/u/20090509/08/bd981996-f01c-4874-b4a5-f74007bd8948.html
kaihongmail 2009-05-09
  • 打赏
  • 举报
回复




还有这个帖子的分:



http://topic.csdn.net/u/20090509/08/bd981996-f01c-4874-b4a5-f74007bd8948.html

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧