输入一串字符,字符个数不超过100,且以“.“结束。判断它们是否构成回文。
#include <iostream>
using namespace std;
int main()
{
char ch, letter[101];
cout << "Input a string:";
cin >> ch;
int i = 0, j = 1;
while (ch != ".") {
++i;
letter[i] = ch;
cin >> ch;
}
whlie ((j < i) && (letter[j] == letter[i])) {
--j; ++i;
}
if (j >= i)
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}
1、第二个while写错了
2、结合上面两位的回答:--j;++i改为++j;--i ch!="."改为ch!='.'
代码如下:
#include
using namespace std;
int main()
{
char ch, letter[101];
cout << "Input a string:";
cin >> ch;
int i = 0, j = 1;
while (ch != '.') {
++i;
letter[i] = ch;
cin >> ch;
}
while((j < i) && (letter[j] == letter[i])) {
++j; --i;
}
if (j >= i)
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}
while (ch != ".")应该改为while (ch != '.')吧,注意双引号与单引号的区别
--j;++i; 改成 ++j;--i。
whlie
这里是 while
至于程序逻辑问题,你得把题目,也就是你程序要做什么说清楚
看了大家的回答相信你根据大家给定的答案修改后程序是可以正常工作的,1.while (ch != ".")ch是一个char类型,"."是字符串类型这两个是不能直接比较的,改成'.'代表是char类型,可正常比较;2.whlie ((j < i) && (letter[j] == letter[i])),whlie拼写有误修正过来就行;3.--j; ++i;改成++j; --i;即可。以上部分修改完成程序可正常运行。
但有几个方面需要优化,建议你改成下面这样子
#include <iostream>
using namespace std;
int main()
{
char ch, letter[101];
cout << "Input a string:";
cin >> ch;
int i = 0, j = 0; // 从0位置开始数据比对
while (ch != '.') {
if(i < 101) //防止数组越界造成段错误
letter[i] = ch;
else
break;
++ i; //保证从索引0开始存储数据
cin >> ch;
}
i --;
while ((j < i) && (letter[j] == letter[i])) {
++ j;
-- i;
}
if (j >= i)
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}
while (ch != ".")应该改为while (ch != '.')
#include
using namespace std;
int main()
{
char ch, letter[101];
cout << "Input a string:";
cin >> ch;
int i = 0, j = 1;
while (ch != '.') {//应该把单引号改成双引号
++i;
letter[i] = ch;
cin >> ch;
}
while ((j < i) && (letter[j] == letter[i])) {//while拼错辽
--j; ++i;
}
if (j >= i)
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}