第几天?【C+版】

第几天?【C+版】

@输入年 月 日,输出是该年的第几天。

  • 运行设备:Dev;
  • 目的:熟悉switch语句和闰年判定的应用。
  • 分析:数据定义,键盘输入,switch条件选定,闰年的判定;
  • 最大优势:思路清晰、方法简明、界面美观。
  • 劣势:未能实现数据的连惯性输出。

详细代码如下:

#include<stdio.h>
main()
{
	int year,month,day,sum = 0;
	
	printf("  Please input a year month day:\n  such as:(2020 5 18).\n  \n");
	scanf("%d %d %d",&year,&month,&day);
	
	switch(month)
	{
		case 1 : sum;
		    break;
		case 2 : sum = 31;
		    break;
		case 3 : sum = 31+28;
		    break;
		case 4 : sum = 31+28+31;
		    break;
		case 5 : sum = 31+28+31+30;
		    break;
		case 6 : sum = 31+28+31+30+31;
		    break;
		case 7 : sum = 31+28+31+40+31+30;
		    break;
		case 8 : sum = 31+28+31+30+31+30+31;
		    break;
		case 9 : sum = 31+28+31+30+31+30+31+31;
		    break;
		case 10 : sum = 31+28+31+30+31+30+31+31+30;
		    break;
		case 11 : sum = 31+28+31+30+31+30+31+31+30+31;
		    break;
		case 12 : sum = 31+28+31+30+31+30+31+31+30+31+30;
		    break;
	}
	sum += day;
	
	if((month > 2 && month < 13) && (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)))
	   sum ++;
	   
	printf("\n%d年%d月%d日是该年的第%d天。\n",year,month,day,sum);
	
	return 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、付费专栏及课程。

余额充值