7-16 求符合给定条件的整数集 (15 分)
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:
输入在一行中给出A。
输出格式:
输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
输入样例:
2
输出样例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
方法1:一次性判断数字是否相同,无论是方法几,都需要注意if语句的位置,这也是初学者容易犯的错误之一
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,k,n;
int count=0;
scanf("%d",&n);
for(i=n;i<=n+3;i++)
{
for(j=n;j<=n+3;j++)
{
for(k=n;k<=n+3;k++)
{
if(i!=j&&i!=k&&j!=k)
{
printf("%d%d%d",i,j,k);
count++;
//if语句一定要放到里面,他是用来添加输出的空格的
//每一位都需要输出空格
if(count%6==0)
{
printf("\n");
}else
{
printf(" ");
}
}
}
}
}
return 0;
}
方法2:巧妙使用continue语句
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,k,n;
int count=0;
scanf("%d",&n);
for(i=n;i<=n+3;i++)
{
for(j=n;j<=n+3;j++)
{
if(j==i) continue;
for(k=n;k<=n+3;k++)
{
if(k==i||k==j) continue;
printf("%d%d%d",i,j,k);
count ++;
//注意if语句是在for循环里面的
//需要注意,末尾不能有多余的空格,可以被6整除说明是末尾,不能则不是
if(count%6==0)
{
printf("\n");
} else
{
printf(" ");
}
}
}
}
return 0;
}