解题思路:
首先定义一个时间结构体Date,其成员包括year,month,day分别表示年,月,日。然后在main函数中定义结构体变量,再定义一个sum用来保存输入日期是该年的第几天,为了后续方便计算,再定义一个数组mon用来保存平年的12个月每个月的天数。接着用cin输入年月日这些信息。当数据输入完毕之后,本程序的主要步骤便开始了。
第一步:判断是否是闰年,如果是,则将二月份的天数改为29天,如果不是,则保持不变。
判断是否为闰年的方法:
①普通年能整除4且不能整除100的为闰年。
②世纪年能整除400的为闰年。
第二步:计算输入的日期是该年的第几天
这里笔者采用for循环来进行计算,先通过循环将输入月份的前几个月份的天数加入到sum中,然后循环结束后再将本月的号加入到sum中,最后输入结果。下面举个例子解释本步骤:
例如输入的日期为2000 12 31,则先通过循环将前11个月的天数加在一起,循环结束后在加上本月的号,即加上31,最后输出结果。
结构体相关知识点总结:
结构体定义:用户自己建立的由不同数据类型组成的组合型的数据结构称为结构体
结构体类型的一般形式:
struct 结构体名
{
成员列表
};
结构体成员的引用:
结构体变量名.成员名
“.”是成员运算符,他在所有的运算符中优先级最高。
参考代码:
#include<iostream> using namespace std; //定义日期结构体 struct Date { int year; int month; int day; }; int main() { //定义结构体变量 Date date; //定义sum保存天数 int sum=0; //用数组保存平年12个月每个人月的天数 int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //输入日期年月日 cin>>date.year; cin>>date.month; cin>>date.day; //判断是否是闰年 if(date.year%4==0&&date.year%100!=0||date.year%400==0) { mon[1]=29; } //计算输入的日期是该年的第几天 for(int i=0;i<date.month-1;i++) { sum+=mon[i]; } sum+=date.day; cout<<sum; return 0; }
0.0分
12 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复