它可以工作,但是如果您输入的数字不小于0,则不会打印较小的值,而是打印0。
int max = 0;
int min = 0;
int a;
printf("Enter a number:\n");
scanf("%d", &a);
while (a != -1){
if (a < min){
min = a;
}
if (a > max){
max = a;
}
scanf("%d", &a);
}
printf("Your largest number is %d. Your smallest number is %d.", max, min);
答案 0 :(得分:0)
这是因为您的初始min
为零,所以 no 的正值将小于该值。
最好更改循环结构,以便无论如何都可以加载初始值,例如:
int a, min = 0, max = 0, first = 1; // Force first number to be used.
printf ("Enter a number:\n");
scanf ("%d", &a);
while (a != -1) {
if (first || a < min) min = a;
if (first || a > max) max = a;
first = 0; // Reset after first number.
scanf ("%d", &a);
}
printf ("Largest is %d, smallest is %d.\n", max, min);
您可能还应该 检查scanf
的返回值,以便捕获非整数输入。这是拥有更强大代码的一种方法,但是对于教育计划来说,这可能还可以(至少只要您了解其中的含义)。
这很容易替换:
scanf ("%d", &a)
类似:
if (scanf ("%d", &a) != 1) {
puts ("Invalid input.");
exit(1);
}