麻烦大家帮我看看为什么我的这段程序出的结果不对。
题目是:找出最大的由个三位数乘积构成的回文数。
代码是:
#include<stdio.h>
#define N 6
int huiwen(long r)
{
int a[N], n=1;
for (int i = 0; r != 0;i++)
{
a[i] = r%10;
r=r/10;
}
for (int j = 0; j <= i/2; j++)
{
if (a[j] != a[i-j])
{
n =0;
}
}
return n;
}
void main()
{
int i=0;
int j=0;
int x=0;
int y=0;
long max=0;
for (i = 999; i >100; i--)
{
for(j = 999; j >100; j--)
{
if (huiwen(i*j) == 1)
{
if (max < i*j)
{
max = i*j;
x=i;
y=j;
}
}
}
}
printf("The largest palindrome is %d x %d = %ld\n",x,y,max);
}
[解决办法]
唉,边界啊边界~
注意你的数组边界问题,在你的函数huiwen(long r)中,这段
for (int j = 0; j <= i/2; j++)
{
if (a[j] != a[i-j])//当j=0时,你觉得a[6]还有意义吗?,应当改成
//if (a[j] != a[i-j-1])
{
n =0;
}
}