嗨再一次,我发现自己陷入了编码困境。我找到了正确的代码,但我不明白为什么我的初始编码不起作用。有人能解释一下这个问题吗?
我的初始代码和可运行代码发布在下面。
INITIAL CODE(无法正常工作)
#include <stdio.h>
#include <conio.h>
int main(void)
{
int counter;
int num1, num2, smallest;
counter = 1;
printf("Enter first number:");
scanf("%d", &num1);
smallest = num1;
while (counter <= 10) // User input phase
{
printf("Enter next numer:");
scanf("%d", &num2);
if (num1 < num2)
{
smallest = num1;
}
if (num2 < num1)
{
smallest = num2;
}
counter++;
}
printf("Smallest is %d", smallest);
getch();
}
RUNNABLE CODE
#include <stdio.h>
#include <conio.h>
int main(void)
{
int counter;
int num1, smallest;
counter = 1;
printf("Enter first number:");
scanf("%d", &num1);
smallest = num1;
while (counter <= 10) // User input phase
{
printf("Enter next numer:");
scanf("%d", &num1);
if (num1 < smallest)
{
smallest = num1;
}
if (smallest < num1)
{
smallest = smallest;
}
counter++;
}
printf("Smallest is %d", smallest);
getch();
}
答案 0 :(得分:1)
在您第一次尝试时,您可以保存每个循环最小的值,但是由于下一个循环将始终检查num1
并在num2
中输入新输入的数字,因此您可以将其删除。
在第二个代码中,工作一个,循环跟踪找到的最后一个最小值。
一点点,代码块
if (num1 < smallest)
{
smallest = num1;
}
if (smallest < num1)
{
smallest = smallest;
}
第二个if
没有意义,你可以写
if (num1 < smallest)
{
smallest = num1;
}
else
{
smallest = smallest;
}
或更好
if (num1 < smallest)
{
smallest = num1;
}