#include
int main()
{
int x,a;
scanf("%d",&x);
if(x>12)
printf("Error");
else if(x==4||x==6||x==9||x==11)
a=30;
else if(x==2)
a=28;
else
a=31;
printf("%d",a);
return 0;
}
因为你的最后一个else下面语句没有作为一个整体,以至于每次不管输入什么都会输出a。把代码修改了一下:
#include
int main()
{
int x,a;
scanf("%d",&x);
if(x>12)
printf("Error");
else if(x==4||x==6||x==9||x==11)
a=30;
else if(x==2)
a=28;
else
{
a=31;
printf("%d",a);}
return 0;
}
看你怎么输入的,你要输入>12的数字,才是error
另外作为月份判断,你没有判断闰年。
if-else的问题,你原来的代码无论x取值多少,都会输出a;
可以改成下面的:
#include <stdio.h>
int main()
{
int x;
scanf("%d",&x);
if(x<=12)
{
switch(x){
case 1:
case 3:
case 5:
case 7:
case 8:
case 12:
printf("31\n");break;
case 4:
case 6:
case 9:
case 11:
printf("30\n");break;
case 2:
printf("28\n");break;
}
}
if(x>12)
printf("Error\n");
return 0;
}
当然,如果是解决月份和天数的问题,有需要考虑是否是闰年的话,还可以稍微改下代码:
#include <stdio.h>
int main()
{
int y,x;
scanf("%d %d",&y,&x);//输入年份和月份
if(x<=12)
{
switch(x){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:printf("31\n");break;
case 4:
case 6:
case 9:
case 11:printf("30\n");break;
case 2:if(y%400==0 || (y%4==0 && y%100!=0))
printf("29\n");
else printf("28");break;
}
}
if(x>12)
printf("Error\n");
return 0;
}
答:代码本身存在一些问题,所以无法输出。
改进代码如下:
#include<stdio.h> //修改1:此处不能漏掉<stdio.h>
int main()
{
int x, a=0; //修改2:由于无论x取什么值都会打印a,故应该给a赋初值
scanf("%d", &x);
if (x > 12)
printf("Error\n");
else if (x == 4 || x == 6 || x == 9 || x == 11)
a = 30;
else if (x == 2)
a = 28;
else
a = 31;
printf("a=%d\n", a);
return 0;
}
你的代码,在我这运行,当x值大于12时是可以输出error的。运行结果图如下:
但是可以看出出现了运行错误,那是因为最后一个else系统把它当做if(x==2)的else,导致当x>12时,a没有值。
解决方法以上各位都已经给出来了,不做赘述了。