为什么我写的代码,和我想要的结果不同

我本来想赋值a为1或2.3.4.5,则b为5.4.3.2.1,可为什么输出不对

img

注意,if判断里面,是==不是=

因为你执行完scanf之后立刻就输出了,a的值改变之后,并没有任何操作就输出b,b只能是默认的值。
调整一下代码顺序,将你那一堆if语句,放在scanf那句话后面。

if(a=5)这个if语句中,重新对a赋值了,而不是判断当前a的值为多少,最后不管a的值输入多少,最后a=1,b=5;
修改为:

if(a==5)//==判断a的值是否等于5,条件满足则进入b=1
    b=1;
else if(a==4)
    b=2;

【以下回答由 GPT 生成】

问题原因是代码中的变量a没有被赋初值就被使用,导致a的值是随机的,可能是0或其他值。因此,代码中的所有if语句均不会执行,b的值保持未初始化的状态。

解决这个问题的方法是,在使用变量a之前,先给它赋一个初始值,例如将int a;修改为int a = 0;

修改后的代码如下所示:

#include <stdio.h>

int main() {
    int a = 0, b;

    if (a == 5) {
        b = 1;
    }

    if (a == 4) {
        b = 2;
    }

    if (a == 3) {
        b = 3;
    }

    if (a == 2) {
        b = 4;
    }

    if (a == 1) {
        b = 5;
    }

    printf("请输入a的值:");
    scanf("%d", &a);
    printf("则输出b的值:%d\n", b);

    return 0;
}

现在,当你输入a的值后,b的值将根据条件语句进行赋值,并输出正确的结果。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^