这一点是找到最小的数字,下一个最小的数字和最大的数字。然后按升序输出它们。但是,当我试图运行这个程序时,我得到一个0,一个指数数字和一个3(输入的数字是1,2,3,以保持简单并确保它有效)。我不确定这些奇怪的结果来自哪里,没有涉及数学,所以我不确定这些甚至是可能的。此外,本练习中不允许使用数组。相信我,我宁愿这样做。
//local variables
int num1;
int num2;
int num3;
int numSmall;
int numMid;
int numLarge;
//Prompt the user for 3 numbers
cout << ("Please enter your first number: ")<<endl;
cin >> num1;
cout << ("Please enter your second number: ")<<endl;
cin >> num2;
cout << ("Please enter your final number: ")<<endl;
cin >> num3;
//compare the 3 numbers to find the order
if (num1 > num2 && num1 > num3){
numLarge = num1;
if (num2 > num3){
numMid = num2;
numSmall = num3;
}
else
numMid = num3;
numSmall = num2;
}
else if (num2 > num1 && num2 > num3){
numLarge = num2;
if (num1 > num3){
numMid = num1;
numSmall = num3;
}
else
numMid = num3;
numSmall = num1;
}
else{
numLarge = num3;
if (num1 > num2){
numMid = num1;
numSmall = num2;
}
}
cout << ("The smallest number is: ") << numSmall << endl;
cout << ("The next smallest number is: ") << numMid << endl;
cout << ("The largest number is: ") << numLarge << endl;
//Pause to read output
system ("pause");
//clear screen to display output
system ("cls");
//Indicate to OS successful termination of program
return 0;
答案 0 :(得分:1)
你的缩进是误导性的:
else numMid = num3; numSmall = num2;
应该是:
else {
numMid = num3;
numSmall = num2;
}
否则,代码将等同于此,我认为这不是您打算做的事情:
else {
numMid = num3;
}
numSmall = num2;
您的计划中还有一些逻辑路径,其中numMid
和numSmall
未被初始化。查看最后一个else
。
如果读取未初始化的int
,则会发生未定义的行为,这会导致各种奇怪的效果。
您应该在编译器中使用更高的警告级别。例如,带有/W4
的Visual C ++会立即发现错误:
stackoverflow.cpp(58) : warning C4701: potentially uninitialized local variable 'numMid' used
stackoverflow.cpp(57) : warning C4701: potentially uninitialized local variable 'numSmall' used
答案 1 :(得分:0)
在ifs的最后阶段看起来你忘记了其他的东西,如果最大的数字是第三个,那么总会得到错误的结果。
答案 2 :(得分:0)
你有两个问题,解决它们,它会正常工作。 (我查了一下)
问题1
按如下方式更新您的最后一个else块。 [如果else
不大于num1
,则错过num2
条件
else{
numLarge = num3;
if (num1 > num2){
numMid = num1;
numSmall = num2;
}else{
numMid = num2;
numSmall = num1;
}
}
问题2
将大括号放在else
和if
条件块内的else if
条件中。因此,最终代码应如下所示。
if (num1 > num2 && num1 > num3){
numLarge = num1;
if (num2 > num3){
numMid = num2;
numSmall = num3;
}else{
numMid = num3;
numSmall = num2;
}
}
else if (num2 > num1 && num2 > num3){
numLarge = num2;
if (num1 > num3){
numMid = num1;
numSmall = num3;
}else{
numMid = num3;
numSmall = num1;
}
}
else{
numLarge = num3;
if (num1 > num2){
numMid = num1;
numSmall = num2;
}else{
numMid = num2;
numSmall = num1;
}
}
答案 3 :(得分:0)
更正的代码。感谢大家的帮助。
import fontawesome from 'fontawesome';