编写一个函数,对于给定的公历年月日,计算出其是星期几,并判断该年份是否为闰年。要求函数的返回值为第5题中的字符串(可直接调用第5题中的函数),是否为闰年以指针形式从形参传递给实参。char * getweek(int year,int mon,int day,int *pleap)
时间: 2024-03-12 20:43:04 浏览: 92
输入公历的某年某月某日,相应的计算出这一天是星期几。
好的,以下是函数的实现:
```c
#include <stdio.h>
char * getweek(int year, int mon, int day, int *pleap) {
int i, sum = 0;
char *week[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
*pleap = 1;
month[1] = 29;
} else {
*pleap = 0;
}
for (i = 0; i < mon - 1; i++) {
sum += month[i];
}
sum += day;
return week[(year - 1) % 7 + sum % 7];
}
int main() {
int year, mon, day, leap;
char *week;
printf("Please input year, month and day:\n");
scanf("%d%d%d", &year, &mon, &day);
week = getweek(year, mon, day, &leap);
printf("The date is %s, and the year is %s leap year.\n", week, leap == 1 ? "a" : "not a");
return 0;
}
```
函数 `getweek` 接收四个参数,分别是年月日以及一个指向整型变量的指针,用于传递是否为闰年的信息。函数内部使用一个名为 `week` 的字符串数组来表示一周的七天,以及一个名为 `month` 的整型数组来表示每个月的天数。如果给定的年份是闰年,则将二月份的天数设为 29。然后,函数将给定日期转化为该年份的第几天,并通过计算该年份的第一天是星期几来推算出该日期是星期几。最后将星期几的字符串返回即可。
在 `main` 函数中,我们先从用户输入中获取年月日三个参数,然后调用 `getweek` 函数计算出星期几以及是否为闰年,最后将结果输出。
阅读全文