读书人

while 循环有关问题

发布时间: 2013-08-09 15:16:24 作者: rapoo

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部分为什么要输入几个数就等于几才能循环?
最大输入上限是多少,为什么? 求解!!!! C while
[解决办法]
while (scanf("%d %d", &evil1, &evil2) == 2)表示scanf同时读入了两个变量值才为true,执行比较操作,如果只是接收到一个值,那么退出。

下面同理。
[解决办法]
scanf的返回值是表示成功接受了几个输入,比如scanf("%d", &evil1);如果你输入数字就返回1,输入字母就返回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)同理

[解决办法]
scanf returns the number of input items converted and assigned
[解决办法]

//标准输入接收了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");
}

[解决办法]
scanf的返回值
输入的个数没有上限,除非栈溢出了。
[解决办法]
看一下scanf的返回值你就知道了
[解决办法]
引用:
看一下scanf的返回值你就知道了

正解啊

读书人网 >C语言

热点推荐