请用switch语句进行程序设计,从键盘上输入一个指定年份和月份的日期,日期格式为:2018-7,判断出该月份有几天。\n\n注:本题涉及到闰年、平年的判断,闰年的2月有29天,平年的2月有28天,已知符
时间: 2023-05-31 16:20:09 浏览: 149
### 回答1:
合条件的闰年有以下几种情况:
1. 能被4整除但不能被100整除;
2. 能被400整除。
根据以上条件,可以使用switch语句进行程序设计,具体实现如下:
#include <stdio.h>
int main()
{
int year, month, days;
printf("请输入日期(格式为:2018-7):");
scanf("%d-%d", &year, &month);
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
days = 29;
else
days = 28;
break;
default:
printf("输入的月份有误!\n");
return 0;
}
printf("%d年%d月有%d天。\n", year, month, days);
return 0;
}
以上程序中,根据输入的月份使用switch语句进行判断,如果是1、3、5、7、8、10、12月,则该月份有31天;如果是4、6、9、11月,则该月份有30天;如果是2月,则根据闰年和平年的判断条件进行判断,最终输出该月份的天数。如果输入的月份不在1~12之间,则输出错误提示信息。
### 回答2:
在使用switch语句进行程序设计时,需要明确输入的日期格式为年月份,例如2018-7,可以通过scanf()函数获取该日期信息。在监听到输入日期后,需要将其拆分为年和月两个变量,并判断该年是否为闰年。
闰年的判断规则如下:
- 能被4整除,但不能被100整除的年份为普通闰年。
- 能被400整除的为世纪闰年。
根据以上规则,可以编写代码进行闰年的判断:
```c
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
// 该年为闰年
} else {
// 该年为平年
}
```
在判断出该年是否为闰年后,就可以根据输入的月份进行计算该月有多少天了。有30天的月份包括4、6、9、11月;有31天的月份包括1、3、5、7、8、10、12月;2月份有28天或29天。
根据以上信息,可以编写代码实现该程序:
```c
#include <stdio.h>
int main() {
int year, month, days;
printf("请输入指定年份和月份,格式为yyyy-mm:\n");
scanf("%d-%d", &year, &month);
switch (month) {
case 2:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
days = 29; // 该年为闰年,2月份有29天
} else {
days = 28; // 该年为平年,2月份有28天
}
break;
case 4: case 6: case 9: case 11:
days = 30;
break;
default:
days = 31;
break;
}
printf("%d年%d月有%d天\n", year, month, days);
return 0;
}
```
在程序执行时,先使用scanf()函数获取输入的日期信息,之后通过switch语句根据输入的月份进行计算该月有多少天,最后输出结果即可。
### 回答3:
本题需要用到switch语句进行程序设计,实现从键盘输入一个指定年份和月份的日期的功能,最终输出该月份有几天。
根据题目所给的日期格式,我们可以使用scanf()函数进行输入操作。在接收输入的年份和月份后,需要对该月份有几天进行判断,并输出结果。其中,闰年、平年的判断为关键。
下面介绍一个比较简单的方法,即可以根据年份是否能被400整除判断是闰年还是平年,同时可以根据年份是否能被4整除但不能被100整除判断是否为闰年。根据该方法,我们可以使用switch语句进行程序设计,实现输入指定年份和月份的日期,并输出该月份有几天的功能。
以下是该程序的代码:
```c
#include <stdio.h>
int main(){
int year, month, day;
printf("请输入日期(格式为:2018-7):");
scanf("%d-%d", &year, &month);
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)){
day = 29;
}else{
day = 28;
}
break;
default:
printf("输入月份有误!\n");
return 1;
}
printf("该月份有%d天\n", day);
return 0;
}
```
该程序中,首先要求用户输入指定日期,并使用scanf()函数获取输入的年份和月份。接着使用switch语句进行判断,对于31天的月份(1月、3月、5月、7月、8月、10月、12月)直接赋值day为31,对于30天的月份(4月、6月、9月、11月)直接赋值day为30。
而对于2月份,需要根据闰年、平年进行判断。根据上述所述的方法,如果年份能够被400整除或者能够被4整除但不能被100整除,则该年为闰年,2月份天数为29天,否则为平年,2月份天数为28天。
最后,输出该月份有几天的结果。
总结:使用switch语句设计程序,能够方便地对用户输入的月份进行判断,结合闰年、平年的判断,实现计算出该月份有几天的功能。
阅读全文