#include <iostream>//运算符重载 双目 #include <string> using namespace std;// class String { private: char *str; int y;//标记是否 1为是,0为否 public: String(char *s); void huiwen(); void show(); }; String::String(char *s) { str = s; } void String::huiwen() { int k = strlen(str); //strlen 测量字符串长度 int i; for (i = 0; i < k; k--, i++) { if (str[i] = str[k]) { y = 1; } else if (str[i] != str[k]) y = 0; } } void String::show() { if (y = 0) cout << "不是回文字符串" << endl; if (y = 1) cout << "是回文字符串" << endl; } int main() { char s[] = "ababcedbaba"; String test(s); test.huiwen(); test.show(); }这段代码有问题,请修改
时间: 2024-01-22 21:03:37 浏览: 96
有两个问题需要修改:
1. `if (str[i] = str[k])` 应该改为 `if (str[i] == str[k])`,因为 `=` 是赋值运算符,应该使用比较运算符 `==`。
2. `if (y = 0)` 和 `if (y = 1)` 应该改为 `if (y == 0)` 和 `if (y == 1)`,因为同样是比较运算符,需要使用 `==`。
修改后的代码如下:
```cpp
#include <iostream>
#include <string>
using namespace std;
class String {
private:
char *str;
int y; //标记是否 1为是,0为否
public:
String(char *s);
void huiwen();
void show();
};
String::String(char *s) {
str = s;
}
void String::huiwen() {
int k = strlen(str); //strlen 测量字符串长度
int i;
for (i = 0; i < k; k--, i++) {
if (str[i] == str[k-1]) {
y = 1;
} else if (str[i] != str[k-1]) {
y = 0;
break;
}
}
}
void String::show() {
if (y == 0)
cout << "不是回文字符串" << endl;
if (y == 1)
cout << "是回文字符串" << endl;
}
int main() {
char s[] = "ababcedbaba";
String test(s);
test.huiwen();
test.show();
return 0;
}
```
阅读全文