今天是本学期的第几周的第几天? (15 分) C语言

今天是本学期的第几周的第几天? (15 分)

根据输入的开学日期和当前的日期,判断当前日期是本学期的第几周的星期几。

输入格式:
在第一行中给出开学日期,年月日中间用‘-’隔开
在第二行中给出当前的日期,年月日中间用‘-’隔开

输出格式:
对每一组输入,在一行中输出‘今天是本学期的第m周的第n天’。

输入样例:
在这里给出一组输入。例如:

2022-2-28
2022-3-6

输出样例:
在这里给出相应的输出。例如:

今天是本学期的第1周的第7

代码:

#include<stdio.h>
int main(void)
{
	int year1,month1,day1,year2,month2,day2,m,d=0;
	int i,j,flag;
	int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
	scanf("%d-%d-%d",&year1,&month1,&day1);
	scanf("%d-%d-%d",&year2,&month2,&day2);
	if(year1%4==0&&year1%100!=0||year1%400==0)
		flag=1;
	else
		flag=0;
	for(i=month1;i<month2;i++)
	{
		d=d+a[flag][i];
	}
	d=d-day1+day2;
	m=d/7+1;
	d=d%7+1;
	printf("今天是本学期的第%d周的第%d天",m,d);
	return 0;
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

大菜彩

家人们鼓励鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值