先来看一下题目:
给定不超过6的正整数A,考虑从A开始的连续的4个数字,请输出所有由他们组成的无重复数字的3位数。
输入格式 :在一行中给出A.
输出格式:输出满足条件的3位数,要求从小到大,每行6个整数,整数间以空格分隔,但行末不能有多余空格。
我们来看一下代码:
具体的解释在每一段重要的地方的注释那里:
#include<stdio.h>
int main()
{
int a;
scanf_s("%d",& a);
int i, j, k;
int cnt = 0;//这个是计数器,就是为了满足题目中的6个一个回车,计算一共出现了多少次。
//三个while是用来挨个输出3位数中的每一位上的数字是多少。
i = a;
while (i <= a+3)
{
j = a;
while (j <= a+3)
{
k = a;
while (k <= a+3)
{
//下面三个条件语句主要是来判断这三个数中不能有两个相等的。
if (i != j)
{
if (i != k)
{
if (j != k)
{
cnt++;
//这两种的输出并没有差别,自己选择一种方法就可以了。
printf("%d%d%d", i, j, k);
//printf("%d", i * 100 + j * 10 + k);
if (cnt == 6)
{
printf("\n");//每6个一个回车。
cnt = 0;//在每一次计数为6的时候,把计数器重置为0。
}
else
{
printf(" ");//每两个三位数中间,有一个空格。
}
}
}
}
k++;
}
j++;
}
i++;
}
return 0;
}
在后面的学习中,我们可以用两个&&的符号,让3个if语句合并成为一个if语句。