输入某年某月某日,判断这一天是这一年的第几天?(C语言经典例题)

题目分析

年份有平年和闰年之分,平年265天,而闰年366天,主要差别是二月28天与29天区别,首先则要判断平润年,闰年的定义:一个年份可以被 4 整除且不能被 100 整除,或者可以被 400 整除,接下来就是通过输入的月份和天数相加获得总天数;
#include<stdio.h>
void main()
{
	int year, month, day;
	int a[] = { 0, 31,28,31,30,31,30,31,31,30,31,30,31 };//用数组存放每个月的天数
	printf("依次输入年 月 日:");
	scanf("%d%d%d", &year, &month, &day);
	if (month > 12 || month < 1) //判断是否输入月份错误 更严谨
	{
		printf("输入错误月份,请重新输入");
		return;//退出程序
	}
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//判断平润年
	{
		++a[2];//如果是闰年,则二月加一天
		printf("这一年是闰年,");
	}
			if (day > a[month] || day < 0)//判断是否输入天数错误 更严谨
			{
				printf("输入天数错误,请重新输入");
				return;
			}
				for (int i = 0; i < month; i++)
					day += a[i];//总天数
				printf("这一天是这一年的第%d天\n", day);
}

代码运行结果

如果有其它建议或想法可以多多交流哦(ง •̀_•́)ง‼

  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用C语言编写一个程序来计算某一天是这一年第几天。具体步骤如下: 1. 首先,需要从用户输入中获取年、月、日的值。 2. 接着,需要判断输入的年份是否为闰年。闰年的判断条件是:能被4整除但不能被100整除,或者能被400整除。 3. 然后,需要根据输入的月份计算出该月之前的天数。可以使用一个数组来存储每个月的天数,然后通过循环累加得到该月之前的天数。 4. 最后,将该月之前的天数加上输入的日数,就可以得到这一天是这一年第几天了。 下面是一个简单的C语言程序,可以实现上述功能: ``` #include <stdio.h> int main() { int year, month, day, i, days; int month_days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; printf("请输入年月日,格式为yyyy-mm-dd:"); scanf("%d-%d-%d", &year, &month, &day); // 判断是否为闰年 if ((year % 4 == && year % 100 != ) || year % 400 == ) { month_days[1] = 29; // 闰年2月有29天 } // 计算该月之前的天数 days = ; for (i = ; i < month - 1; i++) { days += month_days[i]; } // 加上输入的日数 days += day; printf("%d年%d月%d日是这一年的第%d天。\n", year, month, day, days); return ; } ``` 这个程序可以根据用户输入的年月日,计算出这一天是这一年第几天,并输出结果。 ### 回答2: 自然年的每一天,都可以从年初到这一天的天数来计算得出。因此,我们可以通过用户输入的年月日来计算这一天是这一年第几天。 首先,我们需要判断输入的年份是不是闰年。规则是:四年一闰,百年不闰,四百年再闰。以2021年为例,不是4的倍数,也不是100的倍数,因此不是闰年。 其次,根据输入的月份,我们需要把前面所有的月份的天数加起来。对于闰年的情况,2月份的天数是29天,非闰年的情况则是28天。可以通过判断年份是否是闰年来确定2月份的天数。最后再加上这个月份的天数即可。 最后,还要加上用户输入的日期,即是这一年第几天。这样就可以得到答案了。 下面是c语言代码实现: ```c #include <stdio.h> // 判断是否是闰年 int isLeapYear(int year) { if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { return 1; } return 0; } int main() { int year, month, day, sum = 0; int days[] = {31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入年份: "); scanf("%d", &year); printf("请输入月份: "); scanf("%d", &month); printf("请输入日期: "); scanf("%d", &day); // 判断是否是闰年 if (isLeapYear(year)) { days[1] = 29; } // 将前面所有月份的天数加起来 for (int i = 0; i < month-1; i++) { sum += days[i]; } // 再加上这个月份的天数 sum += day; printf("%d年%d月%d日是这一年的第%d天", year, month, day, sum); return 0; } ``` 注意,该代码假设用户输入的数据是合法的,没有进行数据合法性校验,实际应用中要注意处理异常情况。 ### 回答3: 题目要求输入某年某月某日判断一天是这一年第几天。这个问题看起来很简单,但实际上要考虑到闰年和平年的情况,因为它们每年的天数是不同的。 首先,我们需要分析下如何判断一个年份是否为闰年。闰年每四年一闰,即每四年到来的年份都是闰年。但是一百年的倍数年份不是闰年,例如 1700 年、1800 年和 1900 年不是闰年,而 2000 年是闰年。 有了判断闰年的方法,我们就可以根据用户输入的年月日来计算出这一天是这一年第几天了: 1. 定义一个二维数组,存储每个月份对应的天数。如果是闰年,在二月份的天数上加1。 2. 处理输入的日期,计算年份对应的天数。假设用户输入的年份是 2019 年,则最初的天数为 0。 3. 计算月份对于天数的贡献。例如用户输入的是 3 月 15 日,则加上 1 月和 2 月的天数。 4. 加上输入的日期即可得出这一天是这一年第几天。 下面是 C 语言代码实现: ``` #include <stdio.h> int main() { int year, month, day, i, sum = 0; int daysOfMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 存储每个月份对应的天数 printf("请输入年月日,以空格分割:"); scanf("%d%d%d", &year, &month, &day); if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { // 判断是否为闰年 daysOfMonth[1]++; // 闰年的二月有29天 } for (i = 0; i < month - 1; i++) { // 计算月份对于天数的贡献 sum += daysOfMonth[i]; } printf("%d\n", sum + day); // 输出这一天是这一年第几天 return 0; } ``` 以上就是输入某年某月某日判断一天是这一年第几天的 C 语言实现方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值