求问一个C++程序,该怎么解决

求问一个C++程序
int lenth(char a[])
{int i;
for(i=0;a[i]!=0;i++);
return i;
}
void main(){
int i,j,l;
char a[50]
cin.gerline(a,50)
l=lenth(a);
for(i=0,j=l-1;i<j;i++,j--)
if(a[i]!=a[j])
break;
if(j<=i)
cout<<"yes";
else
cout<<"no";}



求解释这个程序是怎么运行的(头文件什么的省略了……),题目要求是判断是否回文
谢谢~~~~~

------解决方案--------------------
左增右减的方法判断对应的数字是否相等,直到超过中间位置,如过中间有位置不相等,则结束比较。比较结束后根据左右索引的位置判断循环结束的原因,如果是循环自然结束,则所有的对应位置相等,是回文;否则不是。
------解决方案--------------------
先搞清楚什么是回文
再去理解程序

否则就是本末倒置。
------解决方案--------------------
同意楼上的
------解决方案--------------------
"回文数"是一种数字。如:98789, 这个数字正读是98789,倒读也是98789
void main(){
int i,j;
char a[50];
cin.getline(a,50)
for(i=0,j=strlen(a);i<j;i++,j--)
if(a[i]!=a[j]){cout<<"no";break;}
cout<<"yes";
}
------解决方案--------------------
根据楼主上传的代码,从总体上看这里有两个函数,一个是lenth函数,用来计算字符的长度;另一个就是主函数。在主函数里,先用getline的形式输入字符串,然后调用lenth函数计算字符串的长度。
for(i=0,j=l-1;i<j;i++,j--)
这一步是判断字符串的头第一个开始,尾部第一个开始判断
if(a[i]!=a[j])
break;
if(j<=i)
cout<<"yes";
else
cout<<"no";}
如果不同,就结束程序,如果相同,这判断头的第二个和尾部第二个是否相同,如此循环。后面的步骤比较简单就不说了,楼主应该懂的,呵呵


------解决方案--------------------
探讨

先搞清楚什么是回文
再去理解程序

否则就是本末倒置。