c语言输入年份与月份输出月份有多少天。求助大神看看错在哪,程序运行不了。

#include<stdio.h>
void main()
{int a,b;
printf("请输入年份:");
scanf("%d",&a);
printf("请输入月份:");
scanf("%d",&b);
if(b<1&&b>12)
{printf("你输入的月份有误,请从新输入。");}
else
{
if(a%4==0||a%100!=0||a%400==0)
{
switch(b)
{
case'1':printf("有31天\n");break;
case'2':printf("有29天\n");break;
case'3':printf("有31天\n");break;
case'4':printf("有30天\n");break;
case'5':printf("有31天\n");break;
case'6':printf("有30天\n");break;
case'7':printf("有31天\n");break;
case'8':printf("有31天\n");break;
case'9':printf("有30天\n");break;
case'10':printf("有31天\n");break;
case'11':printf("有30天\n");break;
case'12':printf("有31天\n");break;
}
}
else
{
switch(b)
{
case'1':printf("有31天\n");break;
case'2':printf("有28天\n");break;
case'3':printf("有31天\n");break;
case'4':printf("有30天\n");break;
case'5':printf("有31天\n");break;
case'6':printf("有30天\n");break;
case'7':printf("有31天\n");break;
case'8':printf("有31天\n");break;
case'9':printf("有30天\n");break;
case'10':printf("有31天\n");break;
case'11':printf("有30天\n");break;
case'12':printf("有31天\n");break;
}

}

}
}

两处错误:

1是case语句后的单引号必须去掉,因为单引号引用的是其内的字符,而不是题意的整数;

2是选别平年闰年的if语句有误,以在源程序上改好了,并有注释,改后程序如下:

#include<stdio.h>
void main()
{int a,b;  
 printf("请输入年份:");
 scanf("%d",&a);
 printf("请输入月份:");
 scanf("%d",&b);
 if(b<1&&b>12)
 {printf("你输入的月份有误,请从新输入。");}
 else
 { 
   if(a%4==0&&(a%100!=0||a%400==0))  //整百的年份前两位能被4整除为闰年
   {
switch(b)
{
case 1:printf("有31天\n");break;
case 2:printf("有29天\n");break;
case 3:printf("有31天\n");break;
case 4:printf("有30天\n");break;
case 5:printf("有31天\n");break;
case 6:printf("有30天\n");break;
case 7:printf("有31天\n");break;
case 8:printf("有31天\n");break;
case 9:printf("有30天\n");break;
case 10:printf("有31天\n");break;
     case 11:printf("有30天\n");break;
     case 12:printf("有31天\n");break;
}
  }   
   else
   {
     switch(b)
{
case 1:printf("有31天\n");break;
case 2:printf("有28天\n");break;
case 3:printf("有31天\n");break;
case 4:printf("有30天\n");break;
case 5:printf("有31天\n");break;
case 6:printf("有30天\n");break;
case 7:printf("有31天\n");break;
case 8:printf("有31天\n");break;
case 9:printf("有30天\n");break;
case 10:printf("有31天\n");break;
     case 11:printf("有30天\n");break;
     case 12:printf("有31天\n");break;
}

   }
   
 }
}

温馨提示:答案为网友推荐,仅供参考
相似回答