Nocrossnocrown
Nocrossnocrown
采纳率92.9%
2018-10-05 08:36

新人求解为什么输不出Error?

  • c
已采纳

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • shaziqin 不会写代码的仓鼠 3年前

    因为你的最后一个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;
    }
    图片说明

    点赞 1 评论 复制链接分享
  • qq_18995069 楚俊慕 3年前

    你的代码,在我这运行,当x值大于12时是可以输出error的。运行结果图如下:

    图片说明

    但是可以看出出现了运行错误,那是因为最后一个else系统把它当做if(x==2)的else,导致当x>12时,a没有值。
    解决方法以上各位都已经给出来了,不做赘述了。

    点赞 2 评论 复制链接分享
  • qq_28158073 Victor.Yue 3年前

    答:代码本身存在一些问题,所以无法输出。
    改进代码如下:

    #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;
    }
    
    点赞 2 评论 复制链接分享
  • dearzy35 dearzy35 3年前

    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;
    }
    
    点赞 2 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 3年前

    看你怎么输入的,你要输入>12的数字,才是error
    另外作为月份判断,你没有判断闰年。

    点赞 1 评论 复制链接分享

为你推荐