说两句题外话,大多数人类都有一个迷惑行为。在新年的那几天回顾上一年发现自己啥都没干,悔恨的泪水就流了下来 为什么今年我还是没上王者 然后开始给自己制定一系列自以为能完成的计划。
当然,想象从来都是给现实摁在地上锤的。当实际操作的时候,你总会吾日三省吾身:
1、这件事情能不能等一下做?
2、这件事能不能明天做?
3、这件事能不能不做?
毕竟明天之后还有明天,明日可以复明日。
既然你觉得还有大把时间的话,不如我们来写一个简单的小程序。提醒一下你的完成Flag 的剩余时间吧!!!
(距离重新立下一个Flag 还有多久 )
题目描述
用户输入年月日,计算该日在本年中是第几天,并且算出今年还有多少时间?(注意闰年问题)
输入
年月日
解题思路:
1、判断是否为闰年;
2、数据的合法性;
3、求出已过天数;
4、求出剩余天数。
#include <stdio.h>
int main(void){
//1、定义需要使用的变量
int year, month, day; //用来接收用户输入的年月日
int month_sum[13] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //平年数据
int count = 0; //天数
int day_sum = 365; //本年的总天数
//2、接收用户的数据
printf("请输入要查询的日期:\n");
scanf("%d%d%d", &year, &month, &day);
//3、判断数据合法性,若不合法则要求重新输入
//年不能为负数、月份不能超过12或为0、天数不能超过当月天数
while(year <= 0 || month <= 0 || month > 12 || day <= 0 || day > month_sum[month - 1]){
printf("数据输入错误,请您重新输入:\n");
printf("请输入要查询的日期:\n");
scanf("%d%d%d", &year, &month, &day);
}
//4、 判断是否为闰年
if(year % 4 == 0 && year / 100 != 0 || year % 400 == 0 || year % 100 % 4 == 0){
for(int i = 0; i < month - 1; i++)
count += month_sum[i]; //将前面整月的天数相加
//按照平年数据相加天数
count += day;
//只有在二月或以后的才需要加1天
if(month >= 2) count += 1; //闰年二月份有29天
day_sum += 1; //闰年366天
}
//如果为平年,则无需变动。因为标准数据是按照平年标准。
else{
for(int i = 0; i < month - 1; i++)
count += month_sum[i];
count += day;
}
//5、输出数据
printf("今天在一年中为第%d天,您的Flag 结束日期还有:%d天!", count, day_sum - count);
return 0;
}
正确输出
当错误输入时,要求重新输入
这里还是要说两句,既然Flag 立下了,就要尽全力去完成他。毕竟时间不等人,哈哈哈~
本月更新进度 2/15
创作不易,你的点赞是我最大的动力!!!
我们下次再见 end~