if语句与scanf()语句的对调?
#include <stdio.h>
void main()
{
int n,min;
printf( "Input a string integers:\n ");
scanf( "%d ",&n);
min=n;
while(n)
{
if(n <min)
min=n;
scanf( "%d ",&n);
}
printf( "The min is %d\n ",min);
}
参考书上说:
循环体中的if语句与scanf()语句的顺序不能对调,因为循环体内要先比较,把已输入的数据处理了,再输入新数据。
但是我将if语句与scanf()语句调换后,并未出错,这是为什么?
[解决办法]
对调后
你试试输入
1
2
3
0
结果是 0
明显是错的
[解决办法]
问题在于:输入0时的处理
1.如果认为输入的0,是参与比较的数字,则调换if语句和scanf语句;
2.如果认为输入的0,是结束输入数字,不参与比较,则不能调换if语句和scanf语句。