首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

麻烦大家帮小弟我看看为什么小弟我的这段程序出的结果不对

2013-03-16 
麻烦大家帮我看看为什么我的这段程序出的结果不对。题目是:找出最大的由个三位数乘积构成的回文数。代码是:#

麻烦大家帮我看看为什么我的这段程序出的结果不对。
题目是:找出最大的由个三位数乘积构成的回文数。

代码是:

#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;
  }
 }

热点排行