知道今天星期几以及年月日,编写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程序,要求能算出任意天后是星期几以及年月日,求高手,在线等啊,急的主要内容,如果未能解决你的问题,请参考以下文章

谁知道怎么用C语言编写万年历啊

c语言编写万年历时计算每月第一天是星期几的公式是啥

求js详细时间代码,年月日星期时分(秒),阴历日期

C语言,求年月日

用SQL语句计算出给定日期是星期几?

C语言的问题:根据输入的年月日,输出该日为该年度的第几周、第几天、星期几。