为什么会循环三次一样的答案

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;
}