计算n天后的日期用c语言写,如2016-2-1 6000天后是什么日期
答案:4 悬赏:30
解决时间 2021-02-02 10:43
- 提问者网友:房东的猫
- 2021-02-02 00:47
计算n天后的日期用c语言写,如2016-2-1 6000天后是什么日期
最佳答案
- 二级知识专家网友:我的任性你不懂
- 2021-02-02 02:16
#include
main()
{
int year,month,day;
int leapyear=0;//闰年时使用
int daytime=0;
int sum;
static int month_date[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入日期:(例如:2010 5 27)");
scanf("%d%d%d",&year,&month,&day);
if(year<=0||month>12||month<1)//判断输入是否正确
{
printf("error!\n");
getch();
exit(0);
}
if(year%400==0||(year%4==0&&year%100!=0))//判断是否为闰年
leapyear=1;//是就加1
if(month==2)//判断日是否输入正确,2月是特殊的因为分闰年和平年
{ if((month_date[month-1]+leapyear) {
printf("error!\n");
getch();
exit(0);
}
}
if(month!=2)//当输入不是2月时,判断输入
{
if(month_date[month-1] {
printf("error!\n");
getch();
exit(0);
}
}
printf("\n请输入天数:");
scanf("%d",&daytime);//输入第n天后
if(daytime<0)
{
printf("error!\n");
getch();
exit(0);
}
sum=daytime+day;//当前日期与n天相加
do
{
if(month==2)//判断当月是不是二月份
month_date[month-1]+=leapyear;
if(sum>month_date[month-1])
{
sum-=month_date[month-1];
month++;//超过当月天数,加一个月
if(month==13)//当月份超过12月时,重新返到1月
{
year++;//加一年
if(year%400==0||(year%4==0&&year%100!=0))//判断加一年后是不是闰年
leapyear=1;
else
leapyear=0;//不是闰年则为0
month=1;//因为12月的下一个月是1月
}
}
}while(sum>month_date[month-1]);//当加起来的天数少于当月的天数就停止循环
day=sum;
printf("\n第%d天后是%d %d %d",daytime,year,month,day);//输出
getch();
}
全部回答
- 1楼网友:何以畏孤独
- 2021-02-02 04:09
#include <stdio.h>
#include <stdlib.h>
int Month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int isYear(int year)
{
if(year%4==0 || (year%100!=0 && year%400==0))
{Month[1]=29;return 1;}
else
{Month[1]=28;return 0;}
}
int main()
{
int year,a,month,b,day,c,n,week,z;
printf("输入年月日(用空格间隔): ");
scanf("%d %d %d",&year,&month,&day);
printf("输入再过n天是: ");
scanf("%d",&n);
printf("输入今天是星期几1-7: "); //星期六:6表示,星期天:7表示
scanf("%d",&week);
a=year;b=month;c=day; //保存输入的年月日
int i;
for(i=1;i<=n;i++)
{
day++;
isYear(year);
if(day>Month[month-1])
{day=1;month++;}
if(month>12)
{month=1;year++;}
}
printf("\n");
printf("今天是%d %d %d 星期%d\n",a,b,c,week);
printf("%d天后是 %d %d %d",n,year,month,day);
z=(week+n)%7; //判断星期几的表达式
switch (z)
{
case 0 :printf("星期日"); break;
case 1 :printf("星期一"); break;
case 2 :printf("星期二"); break;
case 3 :printf("星期三"); break;
case 4 :printf("星期四"); break;
case 5 :printf("星期五"); break;
case 6 :printf("星期六"); break;
}
return 0;
}
- 2楼网友:浪者不回头
- 2021-02-02 03:40
DateTime today = DateTime.Now.AddDays(30);
- 3楼网友:狠傷凤凰
- 2021-02-02 03:14
#include <stdio.h>
#define YEAR 28
#define RYEAR 29
int main(int argc, char const* argv[])
{
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int crr[3] = {0};
int day = 0;
printf("%%d-%%d-%%d %%d, year, month, day, n\n");
scanf("%d-%d-%d%d", &crr[0], &crr[1], &crr[2], &day);
month[1]=(crr[0]%4==0&&crr[0]%100!=0)
||(crr[0]%400==0) ? RYEAR : YEAR;
while(day>month[crr[1]-1]-crr[2]){
day -= month[crr[1]-1]-crr[2];
crr[2] = 0;
crr[1]++;
if(crr[1]==13)
{
crr[0]++;
crr[1] = 1;
month[1]=(crr[0]%4==0&&crr[0]%100!=0)
||(crr[0]%400==0) ? RYEAR : YEAR;
}
}
crr[2] += day;
printf("%d-%d-%d\n", crr[0], crr[1],crr[2]);
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |