【发布时间】:2021-06-23 05:45:27
【问题描述】:
如果用户立即退出(输入 -1),最小的数字会显示 100000 而不是 0,在编写序列列表(1、2、3、4 等)时也会发生这种情况,请帮助。我尝试使用 do-while 循环,但也遇到了同样的问题。
这是任务:
编写一个程序,不断从用户那里获取数字,直到用户输入 -1。最后,您的程序将显示最大和最小的数字。
Output (with sequence list)
To Exit Enter (-1)
enter a number: 1
enter a number: 2
enter a number: 3
enter a number: 4
enter a number: 5
enter a number: -1
Largest Number: 5
Smallest number: 10000000
output (with random numbers)
To Exit Enter (-1)
enter a number: 33
enter a number: 12
enter a number: 50
enter a number: 6
enter a number: 10
enter a number: -1
Largest Number: 50
Smallest number: 6
output (when existing immediately)
To Exit Enter (-1)
enter a number: -1
Largest Number: 0
Smallest number: 10000000
我的代码:
int main()
{
int num, minimum=10000000 , max=0;
int choice;
printf(" To Exit Enter (-1)\n");
while(num!=-1)
{
printf(" enter a number: ");
scanf("%d",&num);
if(num>max)
{
max=num;
}
else if(num<minimum && num!=-1)
{
minimum=num;
}
}
printf("\n Largest Number: %d \n Smallest number: %d",max,minimum);
}
【问题讨论】:
-
如果
num不大于max,你也只检查num < minimum。在您的示例输入中,num > max始终为真(直到您输入-1这是它自己的特殊情况),因此永远不会输入else if分支。 -
建议大家学习做基本调试。在调试器中运行您的程序,并在运行时跟踪其流程和变量值。 How to debug small programs
-
while(1){scanf(num);if(num==-1)break; min-max thing;} 写最小值和最大值。使用 INT_MAX 和 INT_MIN。
-
@NathanPierson 对不起,我不太明白你在初始化之前测试 num 的值是什么意思
-
while(num != 1)在循环开始时检查num是否等于1。第一次循环时,num已声明但未初始化,因此读取其值是未定义的行为。
标签: c