我找很长时间了,就是找不到错误(可以编译,输出不对),拜托各位看一下,新人,没有悬赏分,感谢各位的回答
#include<iostream>
#include<string.h>
#include<cctype>
using namespace std;
int main()
{
char a[101], b[101];
int c[101];
while (cin.getline(a, 101))
{
int i,d, k, x,y,left, right, width , extence = 1, j;
j = 0;//注意变量
int len = strlen(a);
for (i = 0; i<len; i++)//第一步,把字母转化为大写,并以#隔开,例如A#D#S#K
{
if (isalpha(a[i]))
{
if (j >= 1) b[j++] = '#';
c[j] = i;//整型数组C代表找到的字母在原文a中位置
b[j++] = toupper(a[i]);
}
}//此时b的数组的最后一项是j-1
for (k = 1; k <= j - 2; k++)//从第2项开始
{
for (width=1;; width++)
{
if ((b[k - width] != b[k + width]) || (k - width)<=-1 || (k + width)>=j) break;
}
//////////
left = k - width + 1;
right = k + width - 1;
if (b[left] == '#')//保证回文两边必须是字母,而不是有#的存在
{
left+=1;
right-=1;
}
//////////
d=width+1;//回文字母的长度,只是字母,不包括#
if(d>extence)//标记回文两边
{
extence=d;
x=c[left];
y=c[right];
}
}
for(int s=x;s<=y;s++)
cout<<a[s];
cout<<endl;
}
return 0;
}