我想根据输入计算第二大数字。所以我写了这段代码。但是这段代码打印 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;
}
}
这里您没有将 a
、b
或 d
的内容分配给 max2
,您'将未初始化变量 max2 的内容重新分配给其他变量。您的编译器至少应该在此处发出警告。
a = max2;
必须为 max2 = a;
。您需要在收到有关使用未初始化变量 max2
的警告的任何地方交换这些分配。
关于c - 独立于不同的输入获得相同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59982914/