while 循环问题
/* lesser.c -- finds the lesser of two evils */
#include <stdio.h>
int imin(int, int);
int main(void)
{
int evil1, evil2;
printf("Enter a pair of integers (q to quit):\n");
while (scanf("%d %d", &evil1, &evil2) == 2)
{
printf("The lesser of %d and %d is %d.\n",
evil1, evil2, imin(evil1,evil2));
printf("Enter a pair of integers (q to quit):\n");
}
printf("Bye.\n");
return 0;
}
int imin(int n,int m)
{
int min;
if (n < m)
min = n;
else
min = m;
return min;
}
#include <stdio.h>
int main()
{
int i;
printf("please enter a number\n");
while(scanf("%d",&i)==1)
printf("The number is :%d\n",i);
return 0;
}
[解决办法]
while (scanf("%d %d", &evil1, &evil2) == 2)
scanf是有返回值的,
如果evil1和evil2都被成功读入,那么scanf的返回值就是2
如果只有evil1被成功读入,返回值为1
如果evil1和evil2都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
且返回值为int型
所以只有你成功输入两个int型的值,while循环才能继续执行,否则退出
比如说输入2 S 或者 S S等等均会退出循环
while(scanf("%d",&i)==1)同理
//标准输入接收了2个正确的输入值,然后在进入while循环体里进行循环的!
while (scanf("%d %d", &evil1, &evil2) == 2)
{
printf("The lesser of %d and %d is %d.\n",
evil1, evil2, imin(evil1,evil2));
printf("Enter a pair of integers (q to quit):\n");
}