知道今天星期几以及年月日,编写C程序,要求能算出任意天后是星期几以及年月日,求高手,在线等啊,急
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了知道今天星期几以及年月日,编写C程序,要求能算出任意天后是星期几以及年月日,求高手,在线等啊,急相关的知识,希望对你有一定的参考价值。
#include "stdio.h"typedef struct Date
int year;
int month;
int day;
Date;
char *Week[] = "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六";
int days[] = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;
int IsLeapYear(int year);
void ListDate(int weekday, Date now, int diff);
/* 知道今天星期几以及年月日,编写C程序,要求能算出任意天后是星期几以及年月日 */
void main()
int weekday;
Date now;
int diff;
printf("请输入今天是星期几以及日期");
printf("星期几(0..6,星期日..星期六):");
scanf("%d", &weekday);
printf("日期(yyyy-mm-dd): ");
scanf("%d-%d-%d", &now.year, &now.month, &now.day);
printf("相隔天数:");
scanf("%d", &diff);
ListDate(weekday, now, diff);
/* 判断闰年 */
int IsLeapYear(int year)
return ((year%400==0) || (year%4==0 && year%100!=0)) ? 1 : 0;
/* 已知今天是星期几(weekday,0..6,Sunday..Saturday)以及日期(now),输出diff天后是星期几以及日期 */
/* diff > 0 指diff天后,diff < 0 指diff天前 */
void ListDate(int weekday, Date now, int diff)
int w1;
Date d1;
/* 计算diff天后是星期几 */
w1 = weekday + diff;
while(w1 < 0)
w1 += 7;
w1 = w1 % 7;
printf("%d 天后:\\n", diff);
printf("%s\\n", Week[w1]);
/* 计算diff天的日期 */
d1.year = now.year;
d1.month = now.month;
d1.day = now.day + diff;
if(d1.day > 0)
while(d1.day > days[d1.month-1])
d1.day -= days[d1.month-1] + (d1.month==2 && IsLeapYear(d1.year));
d1.month++;
if(d1.month > 12)
d1.month = 1;
d1.year++;
else if(d1.day < 0)
while(d1.day <= 0)
d1.month--;
if(d1.month <= 0)
d1.month = 12;
d1.year--;
d1.day += days[d1.month-1] + (d1.month==2 && IsLeapYear(d1.year));
printf("%d-%d-%d\\n", d1.year, d1.month, d1.day);
参考技术A int main()
int add;
int sub;
CDate date;
//++
date.setValue();
cout << "请输入你要增加的天数:" <<endl;
cin >>add;
date.showDate();
date.addNum(add);
date.showDate();
//--
cout << "\n" << endl;
date.setValue();
cout << "请输入你要减少的天数:" <<endl;
cin >>sub;
date.showDate();
date.subNum(sub);
date.showDate();
return 0;
void CDate::setValue()//设置年月日
cout << "请输入年月日:" << endl;
cin >> year >> month >> day;
void CDate::addNum(int n)//增加任意天数
cout << "加"<< n <<"天是:"<<endl;
testYear(year,months); //根据输入的年份,来判断2月的天数
int i = months[month-1]-day; //剩余天数
if( n - i > 0) //如果加的天数比剩余天数大,月份要增加。
//否则直接加上相应的天数
while( n- i > 0)
month++; //月份加1
if(month > 12)
month=1;
year++;
//******************
testYear(year,months);// 判断是闰年还是平年
//*************
n=n-i; // 增加天数减去当前月份的剩余天数
i=months[month-1];//
day = n;
else
day+=n;
void CDate::subNum(int no)//减少任意天数
cout << "减" << no <<"天是:" << endl;
testYear(year,months);
int i = day;
if( no - day >=0)
while( no-day>=0)
month--;
if(month<1)
month=12;
year--;
testYear(year,months);
no-=day;
day = months[month-1];
day=months[month-1]-no;
else
day-=no;
void CDate::showDate()//显示年月日
cout <<year<< "年"<<month<<"月"<<day << "日" <<endl;
void CDate::testYear(int year,int months[])//设置闰年
months[0]=31;//1月
months[2]=31;
months[3]=30;
months[4]=31;
months[5]=30;
months[6]=31;//7月
months[7]=31;//8月
months[8]=30;
months[9]=31;
months[10]=30;
months[11]=31;//12月
if( (year % 4==0 && year % 100 !=0) || year % 400==0)
months[1]=29;
else
months[1]=28;
class CDate
public:
void setValue();//设置年月日
void addNum(int no);//增加任意天数
void subNum(int no);//减少任意天数
void showDate();//显示年月日
private:
int year; //年
int month;//月份
int day; //日
int months[12];//把月份的天数放到数组里
void testYear(int year,int months[]);//根据闰年去判断月份天数中的2月是29天还是28天
;
//这个可以吗?? 参考技术B 2011年8月23日
以上是关于知道今天星期几以及年月日,编写C程序,要求能算出任意天后是星期几以及年月日,求高手,在线等啊,急的主要内容,如果未能解决你的问题,请参考以下文章