C语言 输入年月日 计算该年第几天 考虑闰月---请指正

#include "stdio.h"
void main()
{
int day,month,year,dm,a;
printf("please input year,month,day\n");
scanf("%d %d %d",&year,&month,&day);

if(year%400==0 || (year%4==0 && year%100 != 0))
a = 29;
else
a = 28;
switch(month)
{
case 1 : dm = 0; printf("这是今年的第%d天",(dm+day)); break;
case 2 : dm = 31; printf("这是今年的第%d天",(dm+day)); break;
case 3 : dm = (a+31); printf("这是今年的第%d天",(dm+day)); break;
case 4 : dm = (a+62); printf("这是今年的第%d天",(dm+day)); break;
case 5 : dm = (a+92); printf("这是今年的第%d天",(dm+day)); break;
case 6 : dm = (a+123); printf("这是今年的第%d天",(dm+day)); break;
case 7 : dm = (a+153); printf("这是今年的第%d天",(dm+day)); break;
case 8 : dm = (a+184); printf("这是今年的第%d天",(dm+day)); break;
case 9 : dm = (a+215); printf("这是今年的第%d天",(dm+day)); break;
case 10: dm = (a+245); printf("这是今年的第%d天",(dm+day)); break;
case 11: dm = (a+276); printf("这是今年的第%d天",(dm+day)); break;
case 12: dm = (a+306); printf("这是今年的第%d天",(dm+day)); break;
default: printf("error"); break;
}
}

#include <stdio.h>
int dm[12]={0,31,59,90,120,151,181,212,243,273,304,334};
int main()
{
    int day, month, year, yday, leap;
    printf("please input year,month,day\n");
    scanf("%d %d %d",&year,&month,&day);
    
    leap = ((year%4==0 && year%100 != 0) || year%400==0);
    if(month >= 1 && month <= 12)
    {
        yday = day + dm[month-1];
        if(month > 2)
            yday += leap;
        printf("这是今年的第%d天", yday);
    }
    else
        printf("error");
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-03
有什么问题么?代码写得不错!运行时,输入格式为 2014<回车>3<回车>1<回车>,或者输入2014<空格>3<空格>1<空格><回车>,均可输出正确结果。考虑闰月,也只是农历上的,和你输入的日期,计算是第几天没有关系哇~
相似回答