作業問題
試撰寫一函式isPalindrome(),此函式接收一字串參數,並傳此字串是否為迴文(palindrome)。我不太理解如何去完成它的條件
回文就是正着读和倒着读都是一样的字符顺序 比如:abcba 这样的 chxchxkkk 发表于 2022-5-4 10:40
回文就是正着读和倒着读都是一样的字符顺序 比如:abcba 这样的
我想問一下為甚麼我下面的 char str[] 會報錯
#include <iostream>
using namespace std;
bool ispalindrome(char *str,int n)
{
char *front = str;
char *back = str + n-1;
if(str == NULL||n<1)
{
return false;
}
while (front < back)
{
if (*front != *back)
{
return false;
}
front++;
back--;
}
return true;
}
int main()
{
char str[];這邊
cin >> str;
int n = strlen(str);
bool n = strlen(str);
bool sign;
sign = ispalindrome(str,n);
if (sign == true)
{
cout << "此字串是回文" << endl;
}
else
{
cout << "此字串不是回文" << endl;
}
return 0;
} caspar1 发表于 2022-5-4 11:10
我想問一下為甚麼我下面的 char str[] 會報錯
#include
using namespace std;
因为你用的是 C++ 的输入流 std::cin,char str[] 必须预设其长度,除非用 C++ 的 std::string 类型数据(长度可变)。 caspar1 发表于 2022-5-4 11:10
我想問一下為甚麼我下面的 char str[] 會報錯
#include
using namespace std;
#include <iostream>
using namespace std;
bool ispalindrome(char* str, int n)
{
char* front = str;
char* back = str + n - 1;
if (str == NULL || n < 1)
{
return false;
}
while (front < back)
{
if (*front != *back)
{
return false;
}
front++;
back--;
}
return true;
}
int main()
{
char str; // <--------------------------- 注意这里 ----------------------------
cin >> str;
int n = strlen(str);
// bool n = strlen(str); <--------------------------- 注意这里 ----------------------------
bool sign;
sign = ispalindrome(str, n);
if (sign == true)
{
cout << "此字串是回文" << endl;
}
else
{
cout << "此字串不是回文" << endl;
}
return 0;
} 傻眼貓咪 发表于 2022-5-4 11:52
因为你用的是 C++ 的输入流 std::cin,char str[] 必须预设其长度,除非用 C++ 的 std::string 类型数据 ...
原來是這樣,當初沒注意到,感謝你!
页:
[1]