C语言日期计算:输入一个日期,计算是一年中的第几天。这个问题的流程图怎么画?

int days(date d)
{
int num = 0;
int m, da, i;
if ((d.year % 4 == 0 && d.year % 100 != 0) || (d.year % 400 == 0))
{

for (m = 1; m <= d.month; m++)
{
if (m == 2)
da = 29;
else if (m == 4 || m == 6 || m == 9 || m == 11)
da = 30;
else
da = 31;
for (i = 1; i <= da; i++)
{
num++;
if (m == d.month && i == d.day)
return num;
}
}

}
else
{
for (m = 1; m <= d.month; m++)
{
if (m == 2)
da = 28;
else if (m == 4 || m == 6 || m == 9 || m == 11)
da = 30;
else
da = 31;
for (i = 1; i <= da; i++)
{
num++;
if (m == d.month && i == d.day)
return num;
}
}
}

}

#include <stdio.h>
int main()
{
    int day = 0;
    int y = 0;
    int m = 1;
    int d = 0;
    scanf("%d-%d-%d", &y, &m, &d);
    switch(m-1)    //故意没有在case里加break
    {
        case 11:
            day += 30;
        case 10:
            day += 31;
        case 9:
            day += 30;
        case 8:
            day += 31;
        case 7:
            day += 31;
        case 6:
            day += 30;
        case 5:
            day += 31;
        case 4:
            day += 30;
        case 3:
            day += 31;
        case 2:
            if((y % 4 == 0 && y % 100 != 0) ||y%400==0) 
            {
                day += 29;
            }
            else
            {
                day += 28;
            }
         case 1:
            day += 31;
             
         default:
             break;
      }
      printf("%d", day+=d);
  
     return 0;
 }
示例运行结果:

2016-10-28
302
温馨提示:答案为网友推荐,仅供参考
相似回答