c语言Switch语句的使用n是学号后两位若n>31则n=n-31 已知2022年3月18日是星期五,要求运行后输入n,回车输出结果 例如:输入32输出2022年3月2日是星期三
时间: 2023-08-31 12:19:43 浏览: 92
C语言实现的皇后问题.rar_N Queen_c语言皇后问题_n 后问题_回溯算法_皇后
### 回答1:
```
#include <stdio.h>
int main() {
int n;
printf("请输入学号后两位n:");
scanf("%d", &n);
if (n > 31) {
n -= 31;
}
int year = 2022;
int month = 3;
int day = 18;
int week = 5;
// 计算n天以后是星期几
int days = n - 1;
week = (week + days) % 7;
// 计算n天以后的日期
while (days > 0) {
int daysOfMonth = 0;
switch (month) {
case 2:
daysOfMonth = 28;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
daysOfMonth = 29;
}
break;
case 4:
case 6:
case 9:
case 11:
daysOfMonth = 30;
break;
default:
daysOfMonth = 31;
break;
}
if (days >= daysOfMonth) {
days -= daysOfMonth;
month++;
if (month > 12) {
year++;
month = 1;
}
} else {
day += days;
if (day > daysOfMonth) {
day -= daysOfMonth;
month++;
if (month > 12) {
year++;
month = 1;
}
}
break;
}
}
// 输出结果
switch (week) {
case 0:
printf("%d年%d月%d日是星期六\n", year, month, day);
break;
case 1:
printf("%d年%d月%d日是星期日\n", year, month, day);
break;
case 2:
printf("%d年%d月%d日是星期一\n", year, month, day);
break;
case 3:
printf("%d年%d月%d日是星期二\n", year, month, day);
break;
case 4:
printf("%d年%d月%d日是星期三\n", year, month, day);
break;
case 5:
printf("%d年%d月%d日是星期四\n", year, month, day);
break;
case 6:
printf("%d年%d月%d日是星期五\n", year, month, day);
break;
}
return 0;
}
```
### 回答2:
为了完成这个任务,我们首先需要确定在输入的n下,程序需要将日期倒退多久。根据题意,如果n大于31,我们需要从n中减去31,因为一个月最多只有31天。
接下来,我们需要找到之前的日期是多少。已知2022年3月18日是星期五,我们可以利用这个信息来推算之前的日期。星期的周期是7天,所以我们可以将n对7取余数来找到倒退多少个星期。然后,根据星期的数量决定倒退几天。
以下是一个使用Switch语句的示例程序来解决这个问题:
```c
#include <stdio.h>
int main() {
int n, days, weekday;
printf("请输入n:");
scanf("%d", &n);
if (n > 31) {
n = n - 31;
}
days = (n - 1) % 7;
weekday = (5 - days + 7) % 7;
switch (weekday) {
case 0:
printf("2022年3月%d日是星期日\n", n);
break;
case 1:
printf("2022年3月%d日是星期一\n", n);
break;
case 2:
printf("2022年3月%d日是星期二\n", n);
break;
case 3:
printf("2022年3月%d日是星期三\n", n);
break;
case 4:
printf("2022年3月%d日是星期四\n", n);
break;
case 5:
printf("2022年3月%d日是星期五\n", n);
break;
case 6:
printf("2022年3月%d日是星期六\n", n);
break;
}
return 0;
}
```
以上程序会先通过输入获取到n的值,然后根据题目要求进行一系列的计算,最终通过Switch语句来输出结果。如果输入的n大于31,程序会先进行减去31的操作。然后,根据倒退的天数计算出所在的星期并输出结果。
希望以上回答能对您有所帮助。
### 回答3:
要解决这个问题,我们可以使用C语言的Switch语句和一些基本的日期计算。
首先,我们需要明确一些基本的知识:
- 2022年3月18日是星期五。
- 一个星期有7天,星期一到星期日分别用数字1到7表示。
- 学号后两位数为n,如果n大于31,则将n减去31。
接下来,我们可以使用C语言编写一个程序来实现这个逻辑。
```c
#include <stdio.h>
int main() {
int n;
printf("请输入n:");
scanf("%d", &n);
// 如果n大于31,则将n减去31
if (n > 31) {
n = n - 31;
}
// 计算给定日期的星期几
int dayOfWeek = (n + 4) % 7;
// 使用Switch语句输出结果
switch (dayOfWeek) {
case 1:
printf("2022年3月%d日是星期一。\n", n);
break;
case 2:
printf("2022年3月%d日是星期二。\n", n);
break;
case 3:
printf("2022年3月%d日是星期三。\n", n);
break;
case 4:
printf("2022年3月%d日是星期四。\n", n);
break;
case 5:
printf("2022年3月%d日是星期五。\n", n);
break;
case 6:
printf("2022年3月%d日是星期六。\n", n);
break;
case 0:
printf("2022年3月%d日是星期日。\n", n);
break;
default:
printf("输入有误。\n");
break;
}
return 0;
}
```
当你运行上述程序,并输入一个合适的n后,程序将输出对应的结果。例如,如果你输入32,则程序将输出"2022年3月2日是星期三。"
阅读全文