C语言输入2023年的1月1 日到3月21日之间的任意一天的日期,输出这一天星期几?如输入: 2023年3月1日,输出2023年3月1日星期三。
时间: 2023-05-17 08:04:35 浏览: 107
可以使用C语言中的time.h库和相关函数来实现这个功能。以下是示例代码:
```c
#include <stdio.h>
#include <time.h>
int main()
{
int year, month, day;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
printf("请输入日期:");
scanf("%d", &day);
struct tm timeinfo = {0};
timeinfo.tm_year = year - 1900;
timeinfo.tm_mon = month - 1;
timeinfo.tm_mday = day;
time_t time = mktime(&timeinfo);
char* weekday = asctime(localtime(&time));
printf("%d年%d月%d日是%s", year, month, day, weekday);
return 0;
}
```
输入示例:2023年3月1日
输出示例:2023年3月1日是Wed Mar 1 00:00:00 2023
其中,asctime函数将时间转换为字符串,localtime函数将时间转换为本地时间。
相关问题
编写一个C语言程序,输入2023年的1月1日到3月21日之间的任意一天的日期,输出这一天星期几?如输入:2023年3月1日,输出2023年3月1日星期三。
好的,这是一个比较简单的问题,以下是C语言程序的代码:
```
#include <stdio.h>
int main()
{
int year, month, day;
printf("请输入日期(格式:年 月 日):");
scanf("%d %d %d", &year, &month, &day);
int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int sum = 0;
for (int i = 1; i < month; i++) {
sum += days[i];
}
sum += day;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
if (month > 2) {
sum++;
}
}
int weekday = (year + year / 4 - year / 100 + year / 400 + sum) % 7;
char *weekdays[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
printf("%d年%d月%d日是%s\n", year, month, day, weekdays[weekday]);
return 0;
}
```
这个程序可以计算输入日期是星期几,其中使用了基本的日期计算方法和蔡勒公式。
C语言:已知1980年1月1日是星期二。 任意输入一个日期,求这一天是星期几
在C语言中,你可以使用蔡勒公式(Zeller's congruence)来计算给定日期是星期几。该公式是一种基于格里高利历(即公历)的算法,它不需要闰年的特殊处理。以下是蔡勒公式的步骤:
```c
int dayOfWeek(int year, int month, int date) {
if (month < 3) { // 如果是前三个月(一月和二月)
month += 12;
year--;
}
int century = year / 100; // 取整数年份除以100
int weekDay = (date + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
return weekDay; // 返回的结果0代表周日,1代表周一,以此类推
}
```
你可以把这个函数应用到1980年1月1日,如果输入其他任意日期,比如用户输入的`year`, `month`, 和`date`,就可以得到这个日期是星期几。
阅读全文