我这个程序是哪里有错,为什么运行结果都是2

img

img

img

img


我刚接触c语言,不熟练,希望有人能告诉我,我的程序哪里有错,为什么运行结果都是2

改这样,供参考:

#include <stdio.h>
int main()
{
    int i = 0, x, bn = 0, a[8] = { 0 };
    scanf("%d", &x);
    if (x == 0)
        bn = 0;
    else{
        while (x) {
            i++;
            if ((x % 10) % 2 == i % 2)
                a[bn++] = 1;
            else
                a[bn++] = 0;
            x /= 10;
        }
        for (i = bn - 1, bn = 0; i >= 0; i--)
            bn = bn * 2 + a[i];
    }
    printf("%d", bn);
    return 0;
}

if (x = 0)
->
if (x == 0)

常见的错误了属于是,等号和赋值号的混淆

【以下回答由 GPT 生成】

问题解答:

这段代码中并没有明显的语法错误,但是逻辑上存在一些问题导致了运行结果一直是2。

问题是在于 if 语句中的条件判断,即 x < y。目前的代码中并没有对变量 x 进行赋值,因此变量 x 的初始值是未定义的。在这种情况下,对未初始化的变量进行比较是不可预测的。

要解决这个问题,我们需要确保变量 x 有一个初始值。下面是修改后的代码:

#include<stdio.h>

int main() {
   int x = 0;
   int y;

   printf("请输入一个整数: ");
   scanf("%d", &y);

   if (x < y) {
       x = 2;
   } else {
       x = 1;
   }

   printf("运行结果: %d\n", x);
   return 0;
}

现在变量 x 的初始值是 0,程序正常运行后会根据用户输入的整数进行条件判断,并将对应的值赋给 x。运行结果也会正确地显示。



【相关推荐】



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