第几天(蓝桥杯2018年第九届省赛c/C++B组第1题)

题目:

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;
}

在这里插入图片描述
最后完成输出结果没问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值