永发信息网

c++计算天数问题

答案:3  悬赏:60  手机版
解决时间 2021-01-26 16:42
#include <stdio.h>
void main()
{
int a,b,c,d;
int e = d + c;
printf("\n请输入年,月,日.");
scanf("%d,%d,%d",&a,&b,&c);

if ((a%100)&&!(a%4)||!(a%400) && b >=2)

switch(b)
{
case 1: d=0;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 2: d=31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 3: d=31+29;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 4: d=31+29+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 5: d=31+29+31+30;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 6: d=31+29+31+30+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 7: d=31+29+31+30+31+30;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 8: d=31+29+31+30+31+30+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 9: d=31+29+31+30+31+30+31+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 10:d=31+29+31+30+31+30+31+31+30;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 11:d=31+29+31+30+31+30+31+31+30+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 12:d=31+29+31+30+31+30+31+31+30+31+30;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
}
else

switch(b)
{
case 1: d=0;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 2: d=31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 3: d=31+28;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 4: d=31+28+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 5: d=31+28+31+30;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 6: d=31+28+31+30+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 7: d=31+28+31+30+31+30;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 8: d=31+28+31+30+31+30+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 9: d=31+28+31+30+31+30+31+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 10:d=31+28+31+30+31+30+31+31+30;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 11:d=31+28+31+30+31+30+31+31+30+31;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
case 12:d=31+28+31+30+31+30+31+31+30+31+30;
printf("您输入的日期为该年的第%d天\n",d + c);
break;
}

}
如果用同样的方法有没有更简便的方式呢??
最佳答案
一个思路:
#include <stdio.h>
int day[11]={31,28,31,30,31,30,31,31,30,31,30};

int GetTheDay(int month)
{
int allday=0;
for(int i=0;i<month-1;i++)
allday+=day[i];
return allday;
}

void main()
{
int a,b,c;
printf("\n请输入年,月,日.");
scanf("%d,%d,%d",&a,&b,&c);
printf("您输入的日期为该年的第%d天\n",GetTheDay(b)+c+((a%100)&&!(a%4)||!(a%400)));
}
全部回答
#include"stdio.h" int main() { int year,month,day,day_count=0; int m_days[11]={31,28,31,30,31,30,31,31,30,31,30},i; printf("\nInput a Date(example:2007,9,4) :"); scanf("%d,%d,%d",&year,&month,&day); for(i=1;i<month;i++) { if(i==2&&((year%4==0&&year%100!=0)||year%400==0)) day_count+=29; else day_count+=m_days[i-1]; } day_count+=day; printf("The day(%d-%d-%d) is the %dth day in %d . \n",year,month,day,day_count,year); return 0; }
不是二月算法问题,而是你的逻辑有问题: 每个月累加的应该是前一个月的天数,而不是本月的天数。 这样改一下就对了: #include using namespace std; int main() { int year,mouth,day,days; cout<<"请输入年,月,日:"; cin>>year>>mouth>>day; days=day; switch(mouth) { case 12:days=days+30; case 11:days=days+31; case 10:days=days+30; case 9:days=days+31; case 8:days=days+31; case 7:days=days+30; case 6:days=days+31; case 5:days=days+30; case 4:days=days+31; case 3:if((year%4==0 && year%100!=0)|| year%400==0) { days=days+29; } else days=days+28; case 2:days=days+31; case 1:days=days; cout<<"days:"<
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯