知道今天星期几以及年月日,编写C程序,要求能算出任意天后是星期几以及年月日,求高手,在线等啊,急

作者&投稿:巧辉 (若有异议请与网页底部的电邮联系)
C语言结构体编程,输入一年月日星期几,计算N天后是哪年哪月哪日星期几,考虑平闰年及各种输入错误情况。~

#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 天后:
", diff);
printf("%s
", 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
", d1.year, d1.month, d1.day);
}

给你一个万年历的网站:
http://www.21softs.com/
直接点开就可以了``你可以把它设为主页!

#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);
}

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天
};

//这个可以吗??

2011年8月23日


今天是星期几?
正确答案一:今天是星期三和正确答案二:今天是周日(那么昨天就是周六)。现在,咱们说答案和分析过程:这道能把人搞晕的数学题虽然很绕,但是不用害怕。因为你想呀,一周也就有7天而已!咱们就一天一天地试验。大不了试验7次即可(实际上用不了这么多)。第一次试验:假设今天就是星期四!推断:今...

各个形式的对时间地提问用英语怎么说
1、问星期几:What day of the week is today?今天是星期几?2、问日期:(1)What's today?今天几号?(2)What day of the month is today? 今天是几号?3、问年月:What is the date?今天是什么日期?4、问时间:(1)What’s the time?现在几点?(2)What time is it?几点了...

2023年的7月30日是星期几9月1号是星期几这道题怎么解答?
以哪天为标准你没说今天4月20日星期四为标准。先计算天数 10+61+30=101天,101÷7=14周余3天,所以7月30日:星期四+3天=星期日,1+31+1=33,33÷7=4周余5天,所以9月1日是星期五。

今日黄历宜忌 2023年6月8日是星期几什么日子?
星期四阴历:二零二三年四月廿一干支:癸卯年 戊午月 丁酉日纳音:[年]金箔金 [月]天上火 [日]山下火生肖:属兔星座:双子座冲煞:冲兔 煞东胎神占方:占仓库门房内北彭祖百忌:丁不剃头头必生疮 酉不宴客醉坐颠狂财神方位: 正西福神方位:东南今日黄历宜忌查询【此日宜】修饰垣墙 平治道涂 扫...

今天是黑道日2024年3月9日农历是多少号星期几
1. 今天是2024年3月9日,农历日期为正月二十九。2. 星期六,这一天是星期六,标志着2024年第11周的开始,共计69天。3. 关于2024年3月9日的日历信息,它并非特别吉祥,因为它是所谓的"黑道日",意味着在这一天不太适宜进行重要的事务。4. 在老黄历中,这一天对应着白虎星宿,需要特别注意避免不...

今日黄历宜忌 2023年12月12日老黄历什么日子 是星期几?
2023年12月12日黄历查询公历:公元 2023年12月12日 星期二阴历:二零二三年十月三十干支:癸卯年 甲子月 甲辰日纳音:[年]金箔金 [月]海中金 [日]覆灯火生肖:属兔星座:射手座冲煞:冲狗 煞南胎神占方:占门鸡栖房内东彭祖百忌:甲不开仓财物耗散 辰不哭泣必主重丧财神方位: 东北福神方位:正...

2023年6月23日老黄历什么日子 是星期几?
2023年6月23日老黄历公历:公元 2023年6月23日 星期五阴历:二零二三年五月初六干支:癸卯年 戊午月 壬子日纳音:[年]金箔金 [月]天上火 [日]桑柘木生肖:属兔星座:巨蟹座冲煞:冲马 煞南胎神占方:占仓库碓外东北彭祖百忌:壬不汲水更难提防 子不问卜自惹祸殃财神方位: 正南福神方位:东南...

今天几月几日,星期几
今天的阳历是2015年9月12日星期六,农历是乙未年七月三十星期六。太阳历又称为阳历,是以地球绕太阳公转的运动周期为基础而制定的历法。太阳历的历年近似等于回归年,一年12个月,这个“月”,实际上与朔望月无关。阳历的月份、日期都与太阳在黄道上的位置较好地符合,根据阳历的日期,在一年中可以明显...

2023年6月29日是星期几
【公历】2023年6月29日 星期四 【农历】二零二三年五月十二 【五行】[年]金箔金 [月]天上火[日]天上火 【生肖】兔 【星座】巨蟹座 今日与虎、狗半合,与羊六合,较为吉祥;与鼠相冲,与牛相害,与马相刑。宜牧养,远回,破屋坏垣,鼓铸,塞穴,扫墓,领证,出行,会亲友;忌伐木,启攒,...

今日黄历宜忌 2023年6月16日是星期几什么日子?
公元 2023年6月16日 星期五阴历:二零二三年四月廿九干支:癸卯年 戊午月 乙巳日纳音:[年]金箔金 [月]天上火 [日]覆灯火生肖:属兔星座:双子座冲煞:冲猪 煞东胎神占方:占碓磨床房内东彭祖百忌:乙不栽植千株不长 巳不远行财物伏藏财神方位: 东北福神方位:西南今日黄历宜忌查询【此日宜】...

榕城区18396305712: 知道今天星期几以及年月日,编写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, ...

榕城区18396305712: 怎样用C语言编写:输入年份、月份、日期,运行得到的是这一天是星期几 -
师怪健脾: #include<stdio.h>#include<math.h>main(){int a,b,c,k,g;int x,y;printf("请输入年月日,年月日之间用逗号隔开:");scanf("%d,%d,%d",&a,&b,&c);x=a/100;//x代表这一年的前两位y=a%100;//y代表这一年的后两位k=x/4+y-x*2+y/4+(26*b+26*1)/10+c-1;g=k%7;printf("这一天是星期%d\n",g);}

榕城区18396305712: C语言程序,输入年月日算出当天星期几 -
师怪健脾: #include "stdio.h"void CaculateWeekDay(int y,int m, int d){if(m==1||m==2) {m+=12;y--;}int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;switc...

榕城区18396305712: 求一个C语言程序 输入年月日知道那天是星期几? 求比较简单点的新手能看懂的 -
师怪健脾: 算法步骤: (1) 输入年份 year(2) 根据公式:d=year+(year-1)/4-(year-100)/100+(yrar-1)/400 ; d=d%7; d=0 则表示为Sunday,d=1 表示Monday 计算这一年的元旦是星期几;(3) 输入月份Month和日期day ,计算该日期是这个年份中的第几天...

榕城区18396305712: 用C语言试编写一个程序,输入今天是星期几,计算并输出100天后是星期几. -
师怪健脾: #include"stdio.h" char xq[7][10]={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};void get_result(int day){int day_after100;//用来保存100后是星期几day_after100=(day-1+100%7)%7;//计算...

榕城区18396305712: C++程序设计给出年月日得出星期几 -
师怪健脾: 程序并不是很长,所以没有分文件#include int month_to_day(int c);void show(int d);int year,month,day;int main(){ cout<<"请输入年月日"<...

榕城区18396305712: 怎样用c语言程序对所输入的日期知道它的星期几数 -
师怪健脾: 1. 接受日期输入 2. 使用mktime和成tm结构 3. 使用localtime再转换成tm 4. 取出tm中的tm_wday #include#includeint main(int argc, char* argv[]) { int year, mon, day; time_t t; struct tm tmval; static char* weekdays[7]={"Sunday", "Monday", "...

榕城区18396305712: 今天是几几年几月几日几分几秒星期几怎样编写函数公式 -
师怪健脾: c语言是这样写的:void write_sfm(uchar add,uchar date) //1602写时分秒函数,4为时,7为分,10为秒 { char shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } void write_nyr(uchar add,...

榕城区18396305712: 求一个c程序 计算某年某月某日是星期几 在线等 谢谢了 -
师怪健脾: run(int year) {int r=0; if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0)) r=1; return(r); }long days(int year,int month,int day) {int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int i,b,x,y; long z; i=b=x=y=0; for(i=1;i<year;i++) {b=run(i); ...

榕城区18396305712: C++ 今天是星期几 建立类来编程 -
师怪健脾: #include using namespace std;class Date{ int year,month,day;public: Date(int y, int m, int d) : year(y), month(m), day(d) {} void print() const { char* s[...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网