输入年月输出有几天,但结果里天数总是是乱码数字

不知道为什么结果输出是这样的,求指点!
程序如下:
#include<stdio.h>
main()
{
int a,b,days,d;
printf("年和月");
scanf("%4d%2d",&a,&b);
switch(b)
{
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((a%4==0&&a%100!=0)||(a%400==0))
d=1;
else
d=0;
if(d)
days=29;
else days=28;
}
printf("%d年%d月的天数为%d天",a,b,days);
}
不知道为什么结果输出是这样的,求指点!

img

b是数值,不能与'1'字符比较
case '1':
应该改成
case 1:
你题目的解答代码如下:

#include <stdio.h>
void main()
{
    int a, b, days, d;
    printf("年和月");
    scanf("%4d%2d", &a, &b);
    switch (b)
    {
    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 ((a % 4 == 0 && a % 100 != 0) || (a % 400 == 0))
            d = 1;
        else
            d = 0;
        if (d)
            days = 29;
        else
            days = 28;
    }
    printf("%d年%d月的天数为%d天", a, b, days);
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

你把case后面的那些单引号都去掉,就对了。
你输入的是整型数字,不是字符型数字
‘1'是字符1,不是数字1

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632