2 suen624 suen624 于 2016.05.07 09:32 提问

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

6个回答

suen624
suen624   2016.05.07 09:32

图片说明

qq_24536171
qq_24536171   2016.05.07 09:58

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

qq423399099
qq423399099   Ds   Rxr 2016.05.07 10:01

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

qq_31805347
qq_31805347   2016.05.07 10:44

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

fn0723
fn0723   2016.05.07 10:50

因为不管是否满座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++;
}

你可以再试试。
qq_31805347
qq_31805347   2016.05.07 11:01

#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);
}
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!