编写一个函数,对于给定的公历年月日,计算出其是星期几,并判断该年份是否为闰年。要求函数的返回值为第5题中的字符串(可直接调用第5题中的函数),是否为闰年以指针形式从形参传递给实参。char * getweek(int year,int mon,int day,int *pleap)
时间: 2024-03-11 14:49:46 浏览: 64
好的,以下是函数的代码实现:
```c
int getweek(int year, int mon, int day) {
int y, c, m, w;
if (mon == 1 || mon == 2) {
y = year - 1;
c = y / 100;
y = y % 100;
m = mon + 12;
} else {
y = year;
c = y / 100;
y = y % 100;
m = mon;
}
w = y + y / 4 + c / 4 - 2 * c + 26 * (m + 1) / 10 + day - 1;
w = (w % 7 + 7) % 7;
return w;
}
char* int2week(int week) {
char* weekStr[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
if (week >= 0 && week <= 6) {
return weekStr[week];
} else {
return NULL;
}
}
char* getweek(int year, int mon, int day, int* pleap) {
int week = getweek(year, mon, day);
char* weekStr = int2week(week);
if (pleap != NULL) {
*pleap = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
return weekStr;
}
```
这个函数接受一个公历年月日的数字参数 `year`、`mon`、`day`,计算出它是星期几,同时判断该年份是否为闰年,并将判断结果以指针形式返回。
函数内部先调用了第4题中的 `getweek()` 函数来计算星期几,再调用第5题中的 `int2week()` 函数将星期几转换为字符串。然后根据公历年份是否为闰年,将判断结果存储在传入的指针 `pleap` 所指向的变量中。
注意,由于这个函数和第5题中的 `int2week()` 函数同名,因此在调用时需要根据参数类型选择正确的函数。
阅读全文