第一个思路是把123到432之间所有数全判断一次,输出符合要求的数,程序如下:
#include <stdio.h>
main()
{
int a, b, c;
int num = 0, i;
for(i = 123; i <= 432; i++)
{
a = i / 100;
b = i % 100 / 10;
c = i % 10;
if((a != b) && (a != c) && (b != c) && a <= 4 && b <= 4 && c <= 4 && a > 0 && b > 0 && c > 0)
{
printf("%4d", i);
num++;
if(num % 6 == 0)
printf("\n");
}
}
printf("\nTotal is: %d", num);
return 0;
}
这个方法过于暴力,而且for循环太长了比较消耗内存。
第二个思路是通过写三个循环来判断数据是否符合要求再输出,程序如下:
#include <stdio.h>
main()
{
int a, b, c, d = 0, num = 0;
for(a = 1; a <= 4; a++)
for(b = 1; b <= 4; b++)
for(c = 1; c <= 4; c++)
{
d = 100 * a + 10 * b + c;
if((a != b) && (b != c) && (a != c))
{
printf("%4d", d);
num++;
if(num % 6 == 0)
printf("\n");
}
}
printf("\nTotal number is: %d\n", num);
return 0;
}
比上一个思路简洁很多,而且占用内存更小!
运行结果如下: