67,944
社区成员




突发兴致,承上一条输入月份,看当月的天数的突发感想,稍加改编题目:输入一个日期,计算该日期距离该年1月1日相隔的天数
// 输入一个日期,计算该日期距离该年1月1日相隔的天数
#include<stdio.h>
int main()
{
int year,month,day;
int month_days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int tmp=0;//日期数据中日的标志位
int daycounts=0;//相隔天数的计算
printf("请输入年月日:");
scanf("%d %d %d", &year,&month,&day);
do{
if (month<1||month>12)
{
printf("输入的月份为:%d,输入错误,请重新输入月份(1-12):",month);
scanf("%d", &month);
}
}while (month<1||month>12);//当输入的月份不是1-12月的话,就一直报错重新输入
do
{
if ((month==2)&&(year%4==0&&year%100!=0||year%400==0))
{
if ((day<(month_days[month-1]+1)))
{
tmp=1;
printf("输入的月份为:%d,输入的日为:%d,输入正确!!",month,day);
}
}
else if ((day<month_days[month-1]))
{
tmp=1;
printf("输入的月份为:%d,输入的日为:%d,输入正确!!",month,day);
}
else
{
printf("输入的月份为:%d,输入的日为:%d,输入错误,请重新输入日期:",month,day);
scanf("%d",&day);
}
} while (tmp==0);//输入的日期不符合要求,继续输入日
printf("输入的时间为%d年%d月%d日,输入正确!\n",year,month,day);
for (int i = 0; i < month-1; i++)
{
daycounts=daycounts+month_days[i];
printf("daycounts=%d\n",daycounts);
}
if ((year%4==0&&year%100!=0||year%400==0)&&(month>2))
{
daycounts=daycounts+day+1;
}
else
daycounts=daycounts+day;
printf("%d年%d月%d日距%d年1月1日相隔%d天",year,month,day,year,daycounts);
return 0;
}
心得:1、大多的精力放在输入数据的正确性上面,输入日期的正确与否直接关系到后面日期的计算
2、其中比较绕的就是怎样判断日期的正确性,可以动手画一下逻辑图,
3、日期的计算方式
计划下一个:输入两个日期,判断两个日期之间相隔的天数。
以上欢迎大家提出宝贵意见,共同进步,谢谢!