先放题:
1. 求解星期。已知2021年11月14日为星期天,输入之前的任意一个年份的时间,
求解是星期几。
说明:输入是三个整数,第一个表示年份,第二个表示月份,第三个表示
日期,比如2020年11月5日为2020 11 5,之间以空格隔开;输入是对应英文单词,
是星期4,为Thursday,首字母大写,其余小写。提示,星期一到星期天对应
英文是Monday, Tuesday, Wendnesday, Thursday,Friday, Saturday和Sunday。
输入示例1:
2020 11 5
输出示例1:
Thursday输入示例2:
2021 6 2
输出示例2:
Wendnesday
这题没什么难度直接放代码吧....:
#include<stdio.h>
/*相隔天数模7,得0为Sunday得1为Saturday得2为Friday.....得6为Monday*/
int main()
{
int y, m, d,t,a,i;
scanf("%d%d%d", &y, &m, &d);
int month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int year = y;
if (year == 2021 && m < 11)
{
a = month[m - 1] - d;
for (i = m; i < 10; i++)
{
a += month[i];
}
a += 14;
}
else if (year == 2021 && m == 11)//注意一下2021十一月需单独讨论
a = 14 - d;
else
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
month[1]=29;
a = month[m - 1] - d;
for (i = m; i < 12; i++)
{
a += month[i];
}
year++;
while (year<2021)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
a+=366;
else
a+=365;
year++;
}
a += 318;
}
t = a % 7;
switch (t)
{
case 0:printf("Sunday"); break;
case 1:printf("Saturday"); break;
case 2:printf("Friday"); break;
case 3:printf("Thursday"); break;
case 4:printf("Wendnesday"); break;//这个wendnesday是错的qwq
case 5:printf("Tuesday"); break;
case 6:printf("Monday"); break;
default:break;
}
return 0;
}
有更好的方法还请大佬指点一下
ps:我大西电竟然把Wednesday打错了,太伤心了
这是我第一次提交:
七十分我百思不得其解,一看是Wednesday的问题,xdoj打的是wendnesday (qwq)
改完之后就对了: