为什么会循环输出三次一样的答案(语言-c语言)

为什么会循环三次一样的答案
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/301549858676182.jpg "#left")

img

  • x 在上面 满足条件【x是3的倍数】,被赋值后, 在下一次遍历 还是 这个 x,轮到下一次满足条件重新被赋予其他值,x也就会被打印三次。
  • 你应该在 循环最后 将 x 重置为 0,就行了
  • 或者 把 打印的那个 if,放到 判断 x是3的倍数 的 if 里面, 改成直接 用 i 判断,并打印
if (i % 3 == 0)
{
      if (i%10==5|| ...)
           printf("%d\n", i);
}

发一下 代码文字

循环三次一样的答案通常是由于程序中出现了死循环的情况,即程序陷入了一个无限循环,每次都输出相同的结果。

在图中给出的代码中,可以看到有一个 while 循环,它的终止条件是 a < 10,但是在循环内部并没有对变量 a 进行任何更新操作,因此当 a 的值一旦满足 a < 10,就会一直执行循环,输出相同的结果。

要解决这个问题,需要在循环内部对变量 a 进行更新,例如在循环末尾添加 a += 1,这样每次循环结束后,a 的值就会增加1,最终当 a 的值大于等于10时,循环就会终止。修改后的代码如下:


a = 0
while a < 10:
    print("hello")
    a += 1

因为打印x的语句的放置位置不对的原因,第一个if条件,i%3==0满足的同时,如果第二个if也满足,i的值++3次后,第一个if才会再次修改x的值,而在此之前的3个i的值变化了,但是x的值还是那个满足第二个要求的值,所以x的值就打印了3次。所以把第二个if放置于第一个if中即可。

修改如下:

#include <stdio.h>
#include <math.h>

int main(void){
    
    int i,x;
    int num=0;
    for(i=1;i<=999;i++){
        if(i%3==0){
            x=i;
            if(x%10==5||x/10%10==5||x/100==5){
                
                num++;
                printf("%3d ",x);
                
                if(num%10==0){
                    printf("\n");
                }
                
            }
        }
        
        
    }
    
    return 0;
}
 

img