#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;
}
}
如果用同样的方法有没有更简便的方式呢??
c++计算天数问题
答案:3 悬赏:60 手机版
解决时间 2021-01-26 16:42
- 提问者网友:绫月
- 2021-01-25 18:02
最佳答案
- 五星知识达人网友:愁杀梦里人
- 2021-01-25 18:28
一个思路:
#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 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)));
}
全部回答
- 1楼网友:像个废品
- 2021-01-25 20:50
#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;
}
- 2楼网友:玩世
- 2021-01-25 19:59
不是二月算法问题,而是你的逻辑有问题:
每个月累加的应该是前一个月的天数,而不是本月的天数。
这样改一下就对了:
#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:"<
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯