C语言while循环里使用scanf()获取键盘输入,执行循环。scanf()在循坏开头还是结尾是不是有很大区别?

代码如下:
#include <stdio.h>
#define SEC_PER_MIN 60 // seconds in a minute
int main(void)
{
int sec, min, left;

printf("Convert seconds to minutes and seconds!\n");
printf("Enter the number of seconds (<=0 to quit):\n");
scanf("%d", &sec); // read number of seconds
while (sec > 0)
{
min = sec / SEC_PER_MIN; // truncated number of minutes
left = sec % SEC_PER_MIN; // number of seconds left over
printf("%d seconds is %d minutes, %d seconds.\n", sec,
min, left);
printf("Enter next value (<=0 to quit):\n");
scanf("%d", &sec);
}
return 0;
}

这一句放到12行后面和18行有什么区别啊?

你的问题并未说清楚。在你这个循环里,不能放在12行后面。因为while(sec>0)中要判断sec是否大于0,如果放在12行后面那么sec被后面的语句改变以了的话,就有问题了。另外,因为while前有一句scanf("%d",&sec);,12行后面再scanf("%d",&sec);的话不是两个语句重复了?若去掉while前的scanf("%d",&sec);,那么第一次进入while(sec>0)时sec还没有赋值,则要出错。所以这段代码的结构决定了scanf("%d",&sec);放在while循环的最后是合理的。放在什么地方是代码结构决定的,并不是while中的scanf("%d",&sec);一定要放在最后……追问

恩恩,我已经知道问题所在了,谢谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-11
肯定啊 ,scanf是会中断你的程序的,他获取不了输入就一直卡在那里,知道接收的输入,才能继续执行放12行上来就卡住了,循环里边的先不执行,放18行先执行循环里边的然后再卡住知道你输入它才再一次进入下一个循环。本回答被网友采纳
第2个回答  2014-12-09
区别是:
    因为你第10行也有一个scanf,所以如果放在12行,则你需要输入第二次,然后后面的min值是根据第二次的值进行计算的,
    放在第18行,则是根据第一次输入的值进行计算的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网