定义一个函数:求某年/月/日是否是星期几? 功能:求星期 返回值:[0-6]0-周日1周一2周二…C语言
时间: 2024-02-23 18:00:26 浏览: 38
以下是一个求某年/月/日是星期几的函数,它使用了 Zeller's congruence 算法:
```c
int dayOfWeek(int year, int month, int day) {
if (month == 1 || month == 2) {
year--;
month += 12;
}
int k = year % 100;
int j = year / 100;
int h = (day + 26 * (month + 1) / 10 + k + k / 4 + j / 4 + 5 * j) % 7;
return h;
}
```
使用方式示例:
```c
int year = 2021;
int month = 6;
int day = 1;
int dayOfWeek = dayOfWeek(year, month, day);
printf("%d-%d-%d is week %d\n", year, month, day, dayOfWeek);
```
输出:
```
2021-6-1 is week 2
```
这表示 2021 年 6 月 1 日是周二。
相关问题
C语言按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题): (1)输入某年某月某日,计算并输出它是这一年的第几天。 /*函数功能: 函数参数: 函数返回值:这一年的第几天
以下是按照函数原型实现的代码:
```c
#include <stdio.h>
int is_leap_year(int year) { // 判断是否是闰年
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
int day_of_year(int year, int month, int day) { // 计算这一天是这一年的第几天
int days_of_month[] = {31, 28 + is_leap_year(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int i, days = 0;
for (i = 0; i < month - 1; i++) {
days += days_of_month[i];
}
days += day;
return days;
}
int main() {
int year, month, day;
printf("请输入年月日:\n");
scanf("%d%d%d", &year, &month, &day);
printf("这一天是这一年的第%d天。\n", day_of_year(year, month, day));
return 0;
}
```
函数`is_leap_year`用来判断是否是闰年,如果是闰年,则返回1,否则返回0。
函数`day_of_year`用来计算这一天是这一年的第几天。首先定义一个数组`days_of_month`存储每个月的天数,其中2月的天数需要根据是否是闰年来判断。然后遍历月份数组,累加前面月份的天数。最后加上当前日期的天数即可。
在`main`函数中,首先提示用户输入日期,然后调用`day_of_year`函数计算并输出这一天是这一年的第几天。
(1)输入某年某月某日,计算并输出它是这一年的第几天。 /*函数功能: 对给定的某年某月某日,计算它是这一年的第几天。函数参数: 整型变量 year、 month、day,分别代表年、月、日函数返回值: 这一年的第几天*/ int DayofYear(int year, int month, int day);
以下是实现该函数的代码:
```c
int DayofYear(int year, int month, int day) {
int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每个月的天数
int days = day; // 先加上当月的天数
for (int i = 0; i < month - 1; i++) { // 减去前面月份的天数
days += daysInMonth[i];
}
if (month > 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) { // 处理闰年2月的情况
days++;
}
return days;
}
```
该函数首先定义了一个数组 `daysInMonth`,用来存储每个月的天数。然后根据输入的年月日计算出这一天是该年的第几天,具体步骤如下:
1. 先将当天的天数 `day` 加到 `days` 中。
2. 然后遍历前面的月份(从 1 到 `month-1`),将每个月的天数加到 `days` 中。
3. 如果当前是闰年的话,并且 `month` 大于 2(即已经过了 2 月),那么将 `days` 加 1。
最终返回 `days` 即可得到这一天是该年的第几天。
阅读全文