c语言编程题:输入一个日期,计算出该日期是星期几?
源代码如下:
/*
* author:X
* date:2021/9/17 18:49
* description:输入一个日期,计算出该日期是星期几?
*/
#include <stdio.h>
int leap(int year);
int main()
{
int year, month, day, i;
int m[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
printf("请输入要判断的年月日(格式如:2021 9 17 年月日之间用空格隔开):");
while (~scanf("%d %d %d", &year, &month, &day))
{
if (day < 1 || month < 1 || month > 12 || year < 1 || year>10000|| day > m[month - 1])
{
printf("%d/%d/%d 是不正确的日期\n", year, month, day);
return -1;
}
if (leap(year))
m[1] = 29;
else
m[1] = 28;
int sum = 0;
sum += day;
for (i = 1; i < month; i++)
sum += m[i - 1];
for (i = 1; i < year; i++)
{
sum += 365;
if (leap(i))
sum++;
}
int dx = sum % 7;
if (dx == 0)
printf("%d/%d/%d 是星期天\n", year, month, day);
else if (dx == 1)
printf("%d/%d/%d 是星期一\n", year, month, day);
else if (dx == 2)
printf("%d/%d/%d 是星期二\n", year, month, day);
else if (dx == 3)
printf("%d/%d/%d 是星期三\n", year, month, day);
else if (dx == 4)
printf("%d/%d/%d 是星期四\n", year, month, day);
else if (dx == 5)
printf("%d/%d/%d 是星期五\n", year, month, day);
else if (dx == 6)
printf("%d/%d/%d 是星期六\n", year, month, day);
}
return 0;
}
int leap(int year) //判断是否为闰年
{
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
return 1;
return 0;
}
测试结果: