#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>