题目:
2000年的1月1日, 是那一年的第1天。
那么, 2000年的5月4日, 是那一年的第几天 ?
注意 : 需要提交的是一个整数, 不要填写任何多余内容。
【答案】125
代码:
#include<stdio.h>
int main()
{
int year = 2000;//年
int month = 5;//月
int date = 4;//日
int day = 0;//第几天
//写出每个月对应的天数,没有十二月的天数,因为过完十二月已经下一年了
//二月先定为28天
int days[12] = { 0,31,28,31,30,31,30,31,31,30,31,30 };
int i = 0;
for (i = 1; i < month; i++)
{
if (i == 2)//判断是否为二月再来判断闰年
{
//判断今年是否为闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
days[i] = 29;//是闰年二月有29天
}
else
{
days[i] = 28;//平年的二月有28天
}
}
day = day + days[i];
}
day = day + date;
printf("%d", day);
return 0;
}
运行结果:
上面是最终的结果,有问题可以评论谢谢了!
下面来介绍思路:
一、分析题目
1、通过题目可知我需要编写一个可以算出一个日期是在该年的第几天
2、先通过月份来算出过来多少天,最后在加上日份就等于天数
3、需要注意每个月的天数不一样,尤其是二月还要判断是否为闰年来确定天数
4、要过完这一月才加上这一月的天数
5、打印只用打印一个整形值
二、编写代码
1、按照需求先定义些我能用到的变量
#include<stdio.h>
int main()
{
int year = 2000;//年
int month = 5;//月
int date = 4;//日
int day = 0;//第几天
//写出每个月对应的天数,没有十二月的天数,因为过完十二月已经下一年了
//二月先定为28天
int days[12] = { 0,31,28,31,30,31,30,31,31,30,31,30 };
return 0;
}
2、用循环把过完月所经过的天数加起来
#include<stdio.h>
int main()
{
int year = 2000;//年
int month = 5;//月
int date = 4;//日
int day = 0;//第几天
//写出每个月对应的天数,没有十二月的天数,因为过完十二月已经下一年了
//二月先定为28天
int days[12] = { 0,31,28,31,30,31,30,31,31,30,31,30 };
int i = 0;
for (i = 1; i < month; i++)
{
if (i == 2)//判断是否为二月再来判断闰年
{
//判断今年是否为闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
days[i] = 29;//是闰年二月有29天
}
else
{
days[i] = 28;//平年的二月有28天
}
}
day = day + days[i];
}
return 0;
}
3、计算完月,最后加上日份,算完后打印
#include<stdio.h>
int main()
{
int year = 2000;//年
int month = 5;//月
int date = 4;//日
int day = 0;//第几天
//写出每个月对应的天数,没有十二月的天数,因为过完十二月已经下一年了
//二月先定为28天
int days[12] = { 0,31,28,31,30,31,30,31,31,30,31,30 };
int i = 0;
for (i = 1; i < month; i++)
{
if (i == 2)//判断是否为二月再来判断闰年
{
//判断今年是否为闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
days[i] = 29;//是闰年二月有29天
}
else
{
days[i] = 28;//平年的二月有28天
}
}
day = day + days[i];
}
day = day + date;
printf("%d", day);
return 0;
}
最后完成输出结果没问题。