要求:通过键盘输入年月日,计算该日是这一年的第几天
代码:
#include <stdio.h> // 引入标准输入输出库
void main() // 主函数,程序的入口
{
int month_day[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 定义并初始化一个数组,存储每个月的天数(注意:这里二月初始化为28天,未考虑闰年)
int year, month, day, *p; // 定义四个整型变量,year表示年份,month表示月份,day表示日期,p是一个指向整型的指针
p = month_day; // 将指针p指向month_day数组的首地址
printf("请输入年月日:"); // 输出提示,要求用户输入年月日
scanf("%d-%d-%d", &year, &month, &day); // 从标准输入读取用户输入的年月日,并存储到对应的变量中
for (int i = 0; i < month; i++) // 循环,从1月到用户输入的月份前一个月
{
day += p[i]; // 将之前月份的天数累加到day变量中
}
// 判断是否为闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) // 判断闰年的条件:能被4整除但不能被100整除,或者能被400整除
{
if (month >= 3) // 如果是闰年且月份大于或等于3(即包含2月),则2月有29天
day++; // 因此需要给day加1
}
printf("%d年的第%d天", year, day); // 输出结果,显示输入的日期是该年的第几天
}
结果: