发布网友 发布时间:2022-10-12 08:36
共2个回答
热心网友 时间:2023-10-20 19:15
最大的毛病是那个回车会判断结束的那句代码是不工作的!另外还有几处错误
#include<iostream.h>
void main()
{
int i,k=0,n;
char a[100];
cin>>n;//输入回文数字的长度
for(i=0;i<n;i++)
{ cin>>a[i];
if(a[i]==0) break; //你的这句始终起不了作用,实践证明
else k++; //k来计算数组元素数
}//这三句的顺序以及括号要注意
for(i=0;i<(k+1)/2;)//此处K帮你加了个1,因为要是k=1怎么办,所有的奇数K均会出错
if(a[i]==a[k-i-1]) //若满足这次两边的某两个数相等,则i++,表示满足一次回文条件,i自增,若不满足i就不自增,自然再下面的if也不会满足,就会输出"不是回文"
i++;
else break;//没有这句就死循环了
if(i==(k+1)/2)
cout<<"是回文"<<endl;
else cout<<"不是回文"<<endl;
}
//补充一下:我就是按的你的思路呀,都说了你的程序那个回车判断会使a[i]='/n'的语句是执行不到的!因为实际情况不是这样的,你想以一个一个字符的方式读入你输入的字符串的话!就要指明你的字符串的长度。所以我在程序里面帮你加了一句回文长度的语句!程序运行的时候有两次输入,第一次输入是回文长度,然后才是回文内容!拜托看下代码...其实你的思路也没什么错,就是很多细节忽略的好严重!请比较我在你代码上的修改...程序截图如下:
热心网友 时间:2023-10-20 19:15
这回可以了吧:(改成j/2了)