加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
weekday.c 1.33 KB
一键复制 编辑 原始数据 按行查看 历史
刘煜 提交于 2024-03-01 14:17 . 删除switch语句,降低圈复杂度
#include <stdio.h>
/* 1990年1月1日 是星期一 */
//每月天数
int monthday[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
//判断闰年
//返回值:闰年返回1,平年返回0
int is_leap(int year)
{
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
int main()
{
int year, month, day, week, leap;
int sum = 0;
int i;
//接收用户输入的日期
scanf("%d/%d/%d", &year, &month, &day);
//计算输入年份的1月1日到1990年1月1日之间的天数
for (i = 1990; i < year; i++)
{
//判断闰年
if (is_leap(i))
{
sum += 366;
}
else
{
sum += 365;
}
}
//判断输入的年份是否是闰年
if (is_leap(year))
{
leap = 1;
}
else
{
leap = 0;
}
//计算1月1日到输入的月份1日之间的天数
for (i = 0; i < month; i++)
{
sum += monthday[i];
if (2 == i)
{
sum += leap;
}
}
//统计输入日期中月内的天数
sum += day;
//计算星期几
week = sum % 7;
if (week != 0)
{
printf("%d年%d月%d日是星期%d\n", year, month, day, week);
}
else
{
printf("%d年%d月%d日是星期日\n", year, month, day);
}
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化