问题描述:
用户从键盘输入年、月、日,在屏幕中输出此日期是该年的第几天。
问题分析:
对于年份应该分类讨论,闰年和平年的区别在于2月份的天数不同,其他月份是一样的。
可以用两个数组来存储每个月的天数。
要求2023-5-20是2023年的第几天时,先判断2023年是否为闰年,接着把前4个月的天数加起来,最后加上20天就是最终结果。以此类推,给出代码如下:
#include<stdio.h>
int leap(int year);//判断是否为闰年
int order_of_year(int year,int month,int day);
int main(void)
{
int year,month,day;
printf("请输入年:\n");
scanf("%d",&year);
printf("请输入月:\n");
scanf("%d",&month);
printf("请输入日:\n");
scanf("%d",&day);
int order = order_of_year(year,month,day);
printf("%d\n",order);
return 0;
}
int leap(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
{
return 1;
}
else
{
return 0;
}
}
int order_of_year(int year,int month,int day)
{
int leap_year[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int common_year[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
int order = 0,i=0;
if(leap(year))
{
for(i=0;i<month-1;i++)
{
order += leap_year[i];
}
order += day;
}
else
{
for(i=0;i<month-1;i++)
{
order += common_year[i];
}
order += day;
}
return order;
}
运行结果: