3,2,1
例如,我不希望这样,有什么建议可以防止这种情况发生吗?代码:
#include <stdio.h>
#include <stdlib.h>
int main (){
int number = 0;
int highestNumber = 0;
int middleNumber = 0;
int lowestNumber = 0;
for(int i = 0; i < 3; i++){
printf("type the %d number: ", i);
scanf("%d", &number);
if(number > highestNumber){
highestNumber = number;
}
if(number < highestNumber && number < middleNumber){
lowestNumber = number;
}
if(number < highestNumber && number > lowestNumber){
middleNumber = number;
}
}
printf("the highest number is: %d, the middle number is: %d and the lowest number is %d.", highiestNumber, middleNumber, lowestNumber);
return 0;
}
我希望代码按照我在 printf()
上输入的顺序返回,尽管输入的顺序是这样的。
5
,现在处于循环的第二遍。您刚刚进入
6
。你的变量看起来像这样:
int number = 6;
int highiestNumber = 5;
int middleNumber = 0;
int lowestNumber = 0;
number > highiestNumber
为 true,因此您输入第一个
if
,并使
highiestNumber
等于
6
。但是您之前输入的
5
会发生什么情况呢?你刚刚覆盖了它!当您将
highiestNumber
的值替换为
number
的值时,您应该将
number
的值替换为
highiestNumber
的值。这会将旧值推到列表的下方。缺少这个。与其他人的想法相同
if
。
0
是可能的最低值。您应该改用
unsigned
和
%u
而不是
int
和
%d
,或者按如下方式初始化变量:
#include <limits.h>
int number;
int highiestNumber = INT_MIN;
int middleNumber = INT_MIN;
int lowestNumber = INT_MIN;
highiestNumber
有太多
i
。