5、编写一个函数,将数字0-6分别转换为"Sunday","Monday","Tuesday","Wednsday","Thursday","Friday","Saturday"。char * int2week(int week) 6、编写一个函数,对于给定的公历年月日,计算出其是星期几,并判断该年份是否为闰年。要求函数的返回值为第5题中的字符串(可直接调用第5题中的函数),是否为闰年以指针形式从形参传递给实参。char * getweek(int year,int mon,int day,int *pleap)
时间: 2023-07-19 10:31:14 浏览: 148
好的,我来帮你实现这两个函数。
第一个函数 int2week 将数字转换为星期字符串,实现如下:
```c++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *int2week(int week);
int main()
{
int week;
char *str;
printf("请输入0-6之间的数字:");
scanf("%d", &week);
str = int2week(week);
printf("%d对应的星期是%s。\n", week, str);
return 0;
}
char *int2week(int week)
{
char *week_str[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
if (week < 0 || week > 6)
{
printf("输入的数字超出范围!\n");
exit(0);
}
return week_str[week];
}
```
这个函数接受一个 int 类型的参数 week,表示数字0-6。函数内部使用了一个字符串数组 week_str,存储了每个数字对应的星期字符串。首先判断输入的数字是否合法,如果不合法,则输出错误信息并退出程序。否则,将对应的字符串返回。
第二个函数 getweek 计算给定日期是星期几,并判断该年份是否为闰年,实现如下:
```c++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *getweek(int year, int mon, int day, int *pleap);
int main()
{
int year, month, day, leap;
char *week;
printf("请输入年月日(用空格隔开):");
scanf("%d%d%d", &year, &month, &day);
week = getweek(year, month, day, &leap);
printf("%d年%d月%d日是%s,", year, month, day, week);
if (leap == 1)
printf("%d是闰年。\n", year);
else
printf("%d不是闰年。\n", year);
return 0;
}
char *getweek(int year, int mon, int day, int *pleap)
{
int i, y, m, leap;
char *week[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int daytab[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}};
y = year;
m = mon;
leap = ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0);
*pleap = leap;
if (m < 1 || m > 12 || day < 1 || day > daytab[leap][m])
{
printf("输入的日期有误!\n");
exit(0);
}
for (i = 1; i < m; i++)
day += daytab[leap][i];
for (i = 1; i < y; i++)
day += ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) ? 366 : 365;
return week[day % 7];
}
```
这个函数接受四个参数:年、月、日和一个指向 int 类型的指针,用于返回是否为闰年。函数内部使用了一个二维数组 daytab,用于存储每个月的天数。首先判断输入的日期是否合法,如果不合法,则输出错误信息并退出程序。否则,计算该日期是该年的第几天,并根据这个值来判断星期几。同时,利用闰年的判断公式 ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) 来判断该年是否为闰年,并将结果通过指针传递给调用者。
以上两个函数可以分别独立编写和使用。
阅读全文