#include<stdio.h>
int main()
{int a[9],i,j,k,t,b,c,d,e,p = 1;
for(i=123 ;i <= 327 ; i++)
{b = i;
a[0] = b % 10;
b = b / 10;
a[1] = b % 10;
b = b / 10;
a[2] = b;
c = 2 * i;
a[3] = c % 10;
c = c / 10;
a[4] = c % 10;
c = c / 10;
a[5] = c;
d = 3 * i;
a[6] = d % 10;
d = d / 10;
a[7] = d % 10;
d = d / 10;
a[8] = d;
for(j = 0 ; j < 9 ; j++)
{for(k = j + 1 ; k < 9 ; k++)
{if(a[j] == a[k])
p = 0;}}
if(p)
{for(t = 0 ; t < 9 ; t++)
{printf("%d",a[t]);
if(e % 3 == 0)
printf("\n");
e++;}}}
return 0;}
我給你簡單說一下:
要滿足1:2:3各位都必須滿足相應得倍數關系
for(i=123 ;i <= 327 ; i++){
...
}
沒有完全獲取所得的數字,且操作的數字應為3位,不是9位。
要滿足 1:2:3 各位不能重復
for(j = 0 ; j < 9 ; j++)
{for(k = j + 1 ; k < 9 ; k++)
這樣是錯誤的,各個位數不重復不代表各個結果數字之間不重復,比如說123和246都滿足條件,但123中有2,246中也有2,這是不沖突的。
最後
for(t = 0 ; t < 9 ; t++)
{printf("%d",a[t]);
if(e % 3 == 0)
printf("\n");
e++;}
e沒有初始化,e % 3沒有意義。