c - 独立于不同的输入获得相同的输出

标签 c

我想根据输入计算第二大数字。所以我写了这段代码。但是这段代码打印 38每次我运行它时,无论输入是什么。请帮我找到这个问题的解决方案。提前致谢。

#include<stdio.h>
int main()
{
    int a , b , c , d , max , max2;
    scanf("%d %d %d %d" , &a , &b , &c , &d);
    if (a>b && a>c && a>d)
        max = a;
    else if (b>a && b>c && b>d)
        max = b;
    else if (c>a && c>b && c>d)
        max = c;
    else
        max = d;
    if (max == a)
        if(b>c && b>d)
            b = max2;
        else if(c>c && c>b)
            c = max2;
        else
            d = max2;
    else if(b == max)
        if(a>c && a>d)
            a = max2;
        else if(c>a && c>d)
            c = max2;
        else
            d = max2;
    else if(c == max)
        if(a>d && a>b)
            a = max2;
        else if(b>a && b>d)
            b = max2;
        else
            d = max2;
    else if(d == max)
        if(a>c && a>b)
            a = max2;
        else if(b>a && b>c)
            b = max2;
        else
            c = max2;

    printf("%d" , max2);
}

最佳答案

问题出在如下代码块中:

else if(c == max){
    if(a>d && a>b){
        a = max2;
    }
    else if(b>a && b>d){
        b = max2;
    }
    else{
        d = max2;
    }
}

这里您没有将 abd 的内容分配给 max2,您'将未初始化变量 max2 的内容重新分配给其他变量。您的编译器至少应该在此处发出警告。

a = max2; 必须为 max2 = a;。您需要在收到有关使用未初始化变量 max2 的警告的任何地方交换这些分配。

关于c - 独立于不同的输入获得相同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59982914/

相关文章:

c - 如何清除传递给 C 函数的 char*?

c++ - popen 上的死锁

c - 再次使用 mmap() ,重新使用以前的 mmap() 结果失败 - 使原始 ptr 无效?

C 双重释放错误

c - 对二维数组求和

c++ - 如何将模板从 C++ 转换为 C

C++ 调试断言失败 _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

c - c中的定期回调

c - pthread_mutex_unlock 不是原子的

c++ - 一元增量运算符的原子行为