题中ok()
函数的使用,用指针判断数组是否重复的算法值得学习
#include <stdio.h>
int ok(int i, int *j);
int a[9];
int main()
{
int n, count = 0;
for (n = 123; n <= 333; n++)
{
if ((ok(n, a)) && (ok(2 * n, a + 3)) && (ok(3 * n, a + 6)))
{
printf("No.%d: %d %d %d\n", ++count, n, 2 * n, 3 * n);
}
}
return 0;
}
int ok(int i, int *j)
{
int *p1;
int *p2;
for (p1 = j; p1 < j + 3; p1++)
{
*p1 = i % 10;
i = i / 10;
for (p2 = a; p2 < p1; p2++)
{
if ((*p1 == *p2) || (*p1 == 0))
{
return 0;
}
}
}
return 1;
}