前两天发现了一个很奇怪的问题,就是输出的换行之间隔了很大的间距,想了很久也没想明白。下面的第一种代码运行出来就是没问题的,第二种的换行之间就隔了很大的间距,之前还从来没有遇见这样的问题。
方案一:
#include<stdio.h>
int main()
{
int n,a,b,j=0,c;
scanf("%d",&n);
for(a=1;a<1000;a++)
{
b=a;
c=0;
while(b>0)
{
c+=b%10;
b=b/10;
}
if(c==n)
{
printf("%8d",a);
j=j+1;
if(j%6==0)
printf("\n");
}
}
if(j%6!=0)
printf("\n");
return 0;
}
方案一对应的正确的输出:

方案二:
```c
#include<stdio.h>
int main()
{
int n,a,b,j=0,c;
scanf("%d",&n);
for(a=1;a<1000;a++)
{
b=a;
c=0;
while(b>0)
{
c+=b%10;
b=b/10;
}
if(c==n)
{
printf("%8d",a);
j=j+1;
}
if(j%6==0)
printf("\n");
}
if(j%6!=0)
printf("\n");
return 0;
}
方案二对应的错误的输出:

两次的代码只有循环中if语句的位置不一样,我认为从逻辑上来讲第二种代码没有问题,但是第二种的输出是错的,有人知道这是为什么吗?