用switch语句实现输入某年某月某日,判断这一天是
时间: 2023-04-28 15:03:03 浏览: 156
输入某年某月某日,判断这一天是这一年的第几天
4星 · 用户满意度95%
星期几。
可以使用以下代码实现:
```
#include <stdio.h>
int main() {
int year, month, day;
printf("请输入年月日,格式为yyyy-mm-dd:");
scanf("%d-%d-%d", &year, &month, &day);
int century = year / 100; // 计算世纪数
year %= 100; // 取出年份的后两位数
int week = ; // 星期几,表示星期日,1表示星期一,以此类推
switch (century % 4) {
case : // 世纪数模4余
switch (month) {
case 1: // 1月
week = (day + 31) % 7;
break;
case 2: // 2月
week = (day + 59) % 7;
break;
case 3: // 3月
week = (day + 90) % 7;
break;
case 4: // 4月
week = (day + 120) % 7;
break;
case 5: // 5月
week = (day + 151) % 7;
break;
case 6: // 6月
week = (day + 181) % 7;
break;
case 7: // 7月
week = (day + 212) % 7;
break;
case 8: // 8月
week = (day + 243) % 7;
break;
case 9: // 9月
week = (day + 273) % 7;
break;
case 10: // 10月
week = (day + 304) % 7;
break;
case 11: // 11月
week = (day + 334) % 7;
break;
case 12: // 12月
week = (day + 365) % 7;
break;
}
break;
case 1: // 世纪数模4余1
switch (month) {
case 1: // 1月
week = (day + 31) % 7;
break;
case 2: // 2月
week = (day + 60) % 7;
break;
case 3: // 3月
week = (day + 91) % 7;
break;
case 4: // 4月
week = (day + 121) % 7;
break;
case 5: // 5月
week = (day + 152) % 7;
break;
case 6: // 6月
week = (day + 182) % 7;
break;
case 7: // 7月
week = (day + 213) % 7;
break;
case 8: // 8月
week = (day + 244) % 7;
break;
case 9: // 9月
week = (day + 274) % 7;
break;
case 10: // 10月
week = (day + 305) % 7;
break;
case 11: // 11月
week = (day + 335) % 7;
break;
case 12: // 12月
week = (day + 366) % 7;
break;
}
break;
case 2: // 世纪数模4余2
switch (month) {
case 1: // 1月
week = (day + 31) % 7;
break;
case 2: // 2月
week = (day + 60) % 7;
break;
case 3: // 3月
week = (day + 90) % 7;
break;
case 4: // 4月
week = (day + 121) % 7;
break;
case 5: // 5月
week = (day + 152) % 7;
break;
case 6: // 6月
week = (day + 182) % 7;
break;
case 7: // 7月
week = (day + 213) % 7;
break;
case 8: // 8月
week = (day + 244) % 7;
break;
case 9: // 9月
week = (day + 274) % 7;
break;
case 10: // 10月
week = (day + 305) % 7;
break;
case 11: // 11月
week = (day + 335) % 7;
break;
case 12: // 12月
week = (day + 366) % 7;
break;
}
break;
case 3: // 世纪数模4余3
switch (month) {
case 1: // 1月
week = (day + 31) % 7;
break;
case 2: // 2月
week = (day + 59) % 7;
break;
case 3: // 3月
week = (day + 90) % 7;
break;
case 4: // 4月
week = (day + 120) % 7;
break;
case 5: // 5月
week = (day + 151) % 7;
break;
case 6: // 6月
week = (day + 181) % 7;
break;
case 7: // 7月
week = (day + 212) % 7;
break;
case 8: // 8月
week = (day + 243) % 7;
break;
case 9: // 9月
week = (day + 273) % 7;
break;
case 10: // 10月
week = (day + 304) % 7;
break;
case 11: // 11月
week = (day + 334) % 7;
break;
case 12: // 12月
week = (day + 365) % 7;
break;
}
break;
}
printf("%d年%d月%d日是星期%d\n", year, month, day, week);
return ;
}
```
这个程序首先让用户输入年月日,然后根据输入的年份、月份和日期计算出这一天是星期几。程序中使用了嵌套的switch语句来实现这个功能。
阅读全文