为什么我的while循环没有破坏。 C

时间:2017-12-12 08:41:51

标签: c while-loop codeblocks

我是编程的新手,我刚学会了,同时,做等等。问题是,当我尝试用第一次检查打破循环时(同时确实)它不会破坏并且它会继续。我尝试了很多东西来处理这个问题(比如复制粘贴我老师给我看的整个程序。)我目前用代码块编程

例如,如果我在开头给出数字0值,程序将不会立即中断,并且它将继续多次尝试打破它。然后它会自行打破。

total = 0;

printf(" ? ");

value = GetInteger();

while (value != 0)
{ 
  total += value;
  printf(" ? "); 
  value = GetInteger(); 
} 

printf("The total is %d\n", total);

4 个答案:

答案 0 :(得分:4)

这一行

printf(" ? "); 

使用缓冲IO。

之前,你不会在终端上看到它
  • 缓冲区已满且已刷新
  • 程序执行fflush(stdout);
  • 您打印换行符\n

您的程序可能会耐心等待您输入整数,但您不知道它,因为提示仍在其内部缓冲区中。

假设您不希望在打印提示和输入整数的用户之间换行,请按以下步骤更改您的程序。

total = 0;

printf(" ? ");
fflush(stdout);

value = GetInteger();

while (value != 0)
{ 
  total += value;
  printf(" ? "); 
  fflush(stdout);
  value = GetInteger(); 
} 

printf("The total is %d\n", total);

答案 1 :(得分:1)

一旦你在循环中完成操作就必须递减值才能达到结束条件,否则它将在无限循环中运行,因为你的if条件只是检查它是否是!= 0。

由于此处未给出GetInteger的定义,我只是假设它将返回一个整数,可能来自输入。

total = 0;

printf(" ? ");

scanf("%d", &value);

while (value != 0)
{ 
  total += value;
  printf(" ? "); 
  scanf("%d", &value);
} 

printf("The total is %d\n", total);

答案 2 :(得分:1)

试试代码

int total = 0;
int value;
printf(" ? ");
scanf("%d",&value);
while (value != 0)
{
       total += value;
       printf(" ? ");
       scanf("%d",&value);
}
printf("The total is %d\n", total);

答案 3 :(得分:-2)

如果它无限循环,则可能是您忘记应用终止条件。

例如,如果要迭代5次,则代码为:

break

如果您想强行破解,请使用 <?php if ($type=="main" ) { echo ' <ul class="footer-nav"> <h2>Links</h2> <li><a href="index.php">Home</a></li> <li><a href="services.php">Our Services</a></li> <li><a href="upvc.php">Upvc repairs</a></li> <li><a href="emergency.php">Emergency 24/7</a></li> </ul>';} else echo ' <ul class="footer-nav"> <h2>Links</h2> <li><a href="locksmiths-<?php echo $areaname ?>.php">Home</a></li> <li><a href="services-<?php echo $areaname ?>.php">Our Services</a></li> <li><a href="services-upvc-repairs-<?php echo $area-name ?>.php">Upvc repairs</a></li> <li><a href="services-<?php echo $area-name ?>-24hour.php">Emergency 24/7</a></li> </ul>' ?> 关键字。