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);
} 展开
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);
} 展开
4个回答
展开全部
输入年月日三个值,先累加该年之前各个月的每月天数,最后累加日期天数即可获取结果。
一、算法设计:
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;
}
展开全部
date.day//要加上该月的第几天,比如输入2010 5 19 <enter>day_sum就要加上1、2、3、4月分总共的天数,然后再加上19天,这就是这一年的第几天
第二个空就填1//因为闰年比平年多一天。
第二个空就填1//因为闰年比平年多一天。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
date.day
1
1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
day
1
1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询