原题: 输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。
#include <stdio.h>
int main()
{
int year,month;
scanf("%d %d",&year,&month);
switch (month)
case 1:
printf("31\n");
break;
case 2:
if(year%4==0 && year%100!=0 || year%400==0)
printf("29");
else
printf("28");
break;
case 3:
printf("31");
break;
case 4:
printf("30");
break;
case 5:
printf("31");
break;
case 6:
printf("30");
break;
case 7:
printf("31");
break;
case 8:
printf("31");
break;
case 9:
printf("30");
break;
case 10:
printf("31");
break;
case 11:
printf("30");
break;
default:
printf("31");
return 0;
}
编译后报错出现这两玩意
[Error] break statement not within loop or switch
[Error] case label not within a switch statement
switch没加括号
switch (month) {
case 1:
...
break;
case 2:
...
}
break语句不在loop或switch块中。每个case后应该跟相应的程序块,然后break终止case。
case label不在switch语句中。case 1: 不应该单独写,应该在switch后面。
switch (month) {
case 1:
printf("31\n");
break;
case 2:
...
break;
case 3:
...
}
不知道你这个问题是否已经解决, 如果还没有解决的话:循环输入。每组数据输入一个数组 aaa,然后分情况进行输出:
1)a = 1,输出 “一”;
2)a = 10,输出 “十”;
3)a = 100,输出 “百”;
4)a = 1000,输出 “千”;
5)a = 10000,输出 “万”;
6)其它请款,输出 “无法识别”;
当没有任何输入时,程序结束。
在C语言中,switch语句中的case标签必须是一个常量表达式。错误1和错误2是因为你在switch语句中使用的表达式不是一个常量。
解决这个问题的方法是使用if-else语句来实现条件判断。以下是修改后的代码:
#include <stdio.h>
int main() {
int year, month, days;
printf("请输入年份和月份:");
scanf("%d %d", &year, &month);
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
days = 31;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
days = 29;
else
days = 28;
} else {
printf("无效的月份\n");
return 0;
}
printf("这一年的%d月有%d天\n", month, days);
return 0;
}
这样修改后的代码将根据用户输入的年份和月份,使用if-else语句进行条件判断,得到正确的天数,并输出结果。
希望对你有所帮助!