int fun4(int a)
{
if(a==6)
a=9;
else if(a==9)
a=6;
return a;
}
main()
{
int s[200],g[200];
int s1[200],g1[200];
//memset(s,0,sizeof(s));
//memset(g,0,sizeof(g));
int i,j,m,k;
int a,b,c,d;
int e,f,n;
m = 0;
k = 0;
for(i=1000;i<=9999;i++)
{
a=i%10; //個位
b=(i/10)%10; //十位
c=(i/100)%10; //百位
d=i/1000; //千位
if(a==0||a==3||b==3||c==3||d==3||a==4||b==4||c==4||d==4||a==7||b==7||c==7||d==7)
{
continue;
}
else
{
a=fun4(a);
b=fun4(b);
c=fun4(c);
d=fun4(d);
n=a*1000+b*100+c*10+d;
e=i-n;
f=n-i;
if(e>=200&&e<300)
{
//m=0;
s[m]=e;
s1[m]=i;
m++;
}
else if(f>=800&&f<900)
{
//k=0;
g[k]=f;
g1[k]=i;
k++;
}
}
}
for(i=0;i<m;i++)
{
for(j=0;j<k;j++)
{
if(g[j]-s[i]==558)
{
//cout<<s[i];
printf("%d\t%d\n", s1[i], g1[j]);
}
}
}
//system("pause");
}
//結果9088
因為環境的原因,我改用C代碼了。
1、妳的f(int)函數是值傳遞,這種方式不會改變形參的值,達不到妳的目的。
2、妳的if語句中c==3寫成了c=3,並且沒有考慮0結尾的情況不會倒置。
3、妳只保存了倒置後的差值,沒有保存原價格,這樣得不到最終結果。
4、妳在判斷的時候設置m=0,k=0,結果只會保存最後的壹個值,m,k最大只會是1。