本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。
💓博主csdn个人主页:小小unicorn
⏩专栏分类:C语言天天练
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识
题目描述:
根据输入的日期,计算是这一年的第几天。保证年份为4位数且日期合法。
输入描述:
输入一行,每行空格分割,分别是年,月,日
输出描述:
输出是这一年的第几天
解题思路:
实现这个问题基本思路很简单,就是遍历数组。
需要注意的是,平年和闰年之间的差别。平年和闰年之间的差别。因此根据用户需求,首先要判断平年还是闰年。
变量含义:
咱们首先定义一个数组,用来存放每一个月的天数,其次定义四个变量,年,月,日以及天数计数器。
monthinfo:数组名(用来存放一年中每个月的天数,以平年为例)
year: 年
month: 月
day: 日
datecount: 天数计数
int monthinfo[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int year, month, day;
具体思路:
闰年的计算是:能被4整除但不能被1整除或者被400整除。
year % 4 == 0 && year % 100 != 0 || year % 400 == 0
如果是闰年,首先让数组下标为1的元素+1;
monthinfo[1]++;
然后遍历数组判断月数(也就是访问数组的第几个下标),找到后用循环对天数实现++操作。
int datecount = 0;
for (int i = 0; i < month - 1; i++)
{
datecount += monthinfo[i];
}
datecount += day;
最后day赋值给天数计数变量变量,打印即可。
datecount += day;
代码实现:
#include <stdio.h>
#include <string.h>
int main()
{
int monthinfo[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int year, month, day;
scanf("%d %d %d", &year, &month, &day);
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
monthinfo[1]++;
}
int datecount = 0;
for (int i = 0; i < month - 1; i++)
{
datecount += monthinfo[i];
}
datecount += day;
printf("%d", datecount);
return 0;
}
结果情况:
合题目情况,问题得到解决。
总结:
本题算是一道简单题,基本思路就是遍历数组,注意到遍历之前首先要判断一个平年闰年情况即可。文章来源:https://www.toymoban.com/news/detail-678466.html
文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。
希望今天的练习能对您有所收获,咱们下期见!文章来源地址https://www.toymoban.com/news/detail-678466.html
到了这里,关于C语言每日一题 ----计算日期到天数转换(Day 2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!