C程序新手。为什么换行情况会是这个结果..求大神帮忙分析下

#include "stdio.h"
void main()
{
int i,j,k,l=0;
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for(k=1;k<5;k++)
{
if(i!=k&&i!=j&&j!=k)
printf("%d%d%d ",i,j,k);
l++;
if(l%5==0)
printf("\n");
}
printf("\n");
printf("共有%d个三位数",l);
}

图片说明

因为你第三个循环后面还有一个输出转行的,第三个循环里面执行完后会执行换行

不知道楼主想得到什么样的输出格式?
因为你每一层的循环都是循环4次,而if(l%5==0) printf("\n"); 这个是每5次循环输出一个回车
如果楼主想得到下面这样的输出形式,那么应该改成if(l%4==0)
图片说明

楼主之不是想要这样的格式呢?
图片说明

因为不管是否满座if()里面的条件,都会执行l++. 从你写的函数来看 ,是该是满足if()条件后才执行的 l++, 所以要把 printf("%d%d%d ",i,j,k);
l++;这两条语句用综括弧 括起来。
应该改成:
if(i!=k&&i!=j&&j!=k)
{
printf("%d%d%d ",i,j,k);
l++;
}

你可以再试试。

#include "stdio.h"
main(){
int i,j,k,l=0;
for(i=1;i<5;i++){
for(j=1;j<5;j++){
for(k=1;k<5;k++){
if(i!=k&&i!=j&&j!=k){
printf("%d%d%d ",i,j,k);

}

l++;
}
}
printf("\n");
}
printf("\n");
printf("ケイモミ%dクホサハ",l);
}
图片说明