c语言中的回文序列的判断

问题描述:

c语言中的回文序列的判断
#include
#define N 50
int main()
{
int n,a,b,c;
a=0;c=0;b=0;
int g[N];
printf("请输入一个数字");
scanf("%d",&n);
while (n>0)
{
g[a++]=n%10;
n=n/10;
}
while (g[b]==g[a-b]&&(a-b)>=0)
{
c++;
b++;
}
if(c==a)
printf("true");
else
printf("flase");
getch ();
}
请高手帮忙看看这个错到哪里了?为什么输出的都是FLASE
1个回答 分类:综合 2014-11-19

问题解答:

我来补答
我也是初学者,不过看了看你的程序,g[a++],由于数组下标是从0开始的,而a++是先用值后自加1,故而数组中是不存在g[a]的,这样,你在下面语句中
g[b]==g[a-b]就不成立了,因为b=0时,就成了g[0]==g[a];的情况,因此,显示flase,你将g[b]==g[a-b]改为g[b]==g[a-b-1],应该就可以了.
另,程序中还有一个繁冗,g[b]==g[a-b-1],有一半的程序是多余的,你可以改改.
另,南院人士的说法不对,g[a++]就是先取 g[0]后a自加1,你再加条语句测一下就好了while (n>0)
{
g[a++]=n%10;
n=n/10;
printf("%d",g[a]);
}
 
 
展开全文阅读
剩余:2000