C语言中输入一个日期计算他是今年的第几天

Python018

C语言中输入一个日期计算他是今年的第几天,第1张

输入年月日三个值,先累加该年之前各个月的每月天数,最后累加日期天数即可获取结果。

一、算法设计:

1、输入年月日三个值;

2、为保证程序健壮性,可以对三个值的合法性进行判断,只对合法数据进行操作;

3、累加之前各月天数;

4、累加当前日值;

5、输出结果。

二、注意点:

可以使用数组存储各个月份的天数,用循环累加。需要注意的是闰年的判断。对于闰年,2月要多加一天。

三、参考代码:

#include <stdio.h>

int main()

{

    int mdays[12] = {31,28,31,30,31,30,31,31,30,31,30,31}//十二个月的天数。

    int y,m,d,r=0,i

    scanf("%d%d%d",&y,&m,&d)

    if(y%400==0 || (y%4==0 && y %100 != 0))//闰年。

        mdays[1] = 29//设置闰年二月值。

    if(y<0 || m<=0 || m>12 || d<=0 || d>mdays[m-1])//输入非法。

    {

        printf("输入年月日不合法\n")//提示并退出。

        return -1

    }

    for(i = 0 i < m-1 i ++)//累加之前各个月。

        r+=mdays[i]

    r+=d//累加日期值。

    printf("%d\n",r)//输出结果。

    return 0

}

我大概给个思路,代码是现写的 没调试

先定义每个月的天数,2月按28天算

输入年月日后,根据年判断是否闰年(闰年加1天),再从1月加到当月的前一月,再加上日期就可以了

#include <stdio.h>

int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31}

main()

{int yy,mm,dd, days

int i

printf("input year:")scanf("%d", &yy)

printf("input month:")scanf("%d", &mm)

printf("input day:")scanf("%d", &dd)

/* 如果大于2月,要做闰年的判断,忘了,不一定准 */

if( mm >2 &&((year%4==0 &&year%100!=0) || year%400==0) ) days = 1

else days = 0

/* 加上前面各整月的天数 */

for(i = 0i <mm-1i++) days += month[i]

/* 加上日数 */

days += dd

printf("This is the %d day of year %d!!\n", days, yy)

}

比如输入 1999 2 1

应该输出:This is the 32 day of year 1999!!