有关 while 输入输出的问题

LI-O 2013-08-26 09:25:57
#include<stdio.h>

int main(void)
{
int feet, fathoms;


while(scanf("%d",&fathoms))
{
if(feet == 0)
break;
feet = 6 * fathoms;
printf("feet is %d \n",feet);
printf(" put !\n");

}

printf(" End of cycle!!!\n");

return 0;
}

下面是输入输出情况 :
0
feet is 0
put !
0
End of cycle!!!

我明明 有break 语句在起作用, 可是为什么 需要输入两个 零才能显示退出循环???

...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Adol1111 2013-08-26
  • 打赏
  • 举报
回复
引用 3 楼 w15tp 的回复:
不是没有变,而是因为 if语句在 feet语句之前,导致 第一次输入的0 先被 if 语句接受。 但此时 feet 值还没有计算出来,所以直接过, 然后才计算 feet值, 输出/。。。 但是第二次循环的时候发生了什么情况?? 只输入一个 零就结束循环??求解。。
你if没有加{}呀,所以if下只有break;一句话,break之后的几句话还是照常进行的。所以第一次输入0之后,执行了feet = 6 * fathoms;把feet变成了0,所以第二次进入时,if判断成立就直接break了
LI-O 2013-08-26
  • 打赏
  • 举报
回复
引用 2 楼 xxpyb 的回复:
feet值开始时候,为随机值,不是0,因此if判断在第一次不起作用。
不是没有变,而是因为 if语句在 feet语句之前,导致 第一次输入的0 先被 if 语句接受。 但此时 feet 值还没有计算出来,所以直接过, 然后才计算 feet值, 输出/。。。 但是第二次循环的时候发生了什么情况?? 只输入一个 零就结束循环??求解。。
LI-O 2013-08-26
  • 打赏
  • 举报
回复
引用 1 楼 Adol1111 的回复:
你开始输入0的时候 feet的值没有变。 下面的feet = 6 * fathoms;才使得他feet变成0,所以你第二次填什么数字都没关系。 你把下面几句放到if之前就好了
不是没有变,而是因为 if语句在 feet语句之前,导致 第一次输入的0 先被 if 语句接受。 但此时 feet 值还没有计算出来,所以直接过, 然后才计算 feet值, 输出/。。。 但是第二次循环的时候发生了什么情况?? 只输入一个 零就结束循环??求解。。
xxpyb 2013-08-26
  • 打赏
  • 举报
回复
feet值开始时候,为随机值,不是0,因此if判断在第一次不起作用。
Adol1111 2013-08-26
  • 打赏
  • 举报
回复
你开始输入0的时候 feet的值没有变。 下面的feet = 6 * fathoms;才使得他feet变成0,所以你第二次填什么数字都没关系。 你把下面几句放到if之前就好了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧