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

程序填空题tk304.c首先定义了一个结构体变量(包括年、月、日),然后从键盘上输入任意的一天(包括年月日),最后计算该日在当年中是第几天,此时当然要考虑闰年问题。现在程... 程序填空题
tk304.c首先定义了一个结构体变量(包括年、月、日),然后从键盘上输入任意的一天(包括年月日),最后计算该日在当年中是第几天,此时当然要考虑闰年问题。
现在程序是一个不完整的程序,请你在下划线空白处将其补充完整,以便得到正确的答案,但不得增删原来的语句。

#include <stdio.h>
struct datetype{
int year;
int month;
int day;
}date;
void main( )
{
int i,day_sum;
static int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("\nPlease input your date:\n");
scanf("%d%d%d",&date.year, &date.month, &date.day);
day_sum=0;
for(i=1;i<date.month;i++)day_sum+=day_tab[i];
day_sum+=_______(1)_________;
if((date.year % 4 == 0 && date.year % 100 != 0 || date.year % 400 ==0) && date.month>=3 )
day_sum+=___(2)_______;
printf("%d-%d-%d is No. %d of this year.\n",date.year,date.month,date.day,day_sum);
}
展开
 我来答
风若远去何人留
2017-05-25 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

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

一、算法设计:

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;
}
lendylongli
2010-05-19 · TA获得超过781个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:139万
展开全部
date.day//要加上该月的第几天,比如输入2010 5 19 <enter>day_sum就要加上1、2、3、4月分总共的天数,然后再加上19天,这就是这一年的第几天

第二个空就填1//因为闰年比平年多一天。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
562738607
2010-05-19 · TA获得超过1261个赞
知道小有建树答主
回答量:1015
采纳率:0%
帮助的人:903万
展开全部
date.day
1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dukang9904455
2010-05-19 · TA获得超过811个赞
知道小有建树答主
回答量:1028
采纳率:0%
帮助的人:944万
展开全部
day
1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式