我的任务是创建一个程序来检查输入的字符串是否是回文,所以我在这里有这个简单的程序:
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main()
{
char y[100], x[100];
cout << "Enter word" << endl;
cin >> y;
strcpy(x, y);
strrev(x);
if (strcmp(y, x) == 0)
cout << "Palindrome";
else
cout << "Not Palindrome";
system("pause");
return 0;
}
但是,我不允许使用strcpy,strrev,strcmp等字符串函数。在这种情况下,我可能会为此程序使用一个字符数组。如果代码易于理解,我可能会感激,因为我是C ++的初学者。任何帮助表示赞赏。
***感谢早期的帮助,我完成了大部分程序。
***我忘了添加,程序忽略字符串中的空格,如&#34; rad ar&#34;或&#34;赛车&#34;仍将作为回文返回。遗憾的是,我无法弄清楚这个空间检查功能的编码。
答案 0 :(得分:1)
回文只是一个单词,其第一个字符等于最后一个字符,依此类推。因此,为了检查它是否是回文,你只需复制strlen函数的功能就可以知道你要比较第一个字符的角色的位置。
在C ++中,使用变量,可以使用while循环轻松完成:
int i = 0;
// Is this a null terminating character?
while (y[i])
{
// Move to the next character
i++;
}
为了让事情更容易,并且真正成为strlen的一个插件,这可以放在一个函数中:
int stringLength (char *input)
{
int i = 0;
while (input[i])
{
i++;
}
return i;
}
现在你只需循环输入,比较第一个字符和最后一个字符,比较第二个字符和第二个字符,依此类推......你只需要记住,由于数组的工作方式,最后一个字符实际上位于len-1位置。
#include <iostream> // required for cout, and cin
// returns the length of a c style string
int stringLength(char *input)
{
int i = 0;
// Is this a null terminating character
while (input[i])
{
// No, check the next character
i++;
}
return i;
}
int main()
{
// Get input from the user.
char input[100];
std::cin >> input;
// Calculate the length of the input
int length = stringLength(input);
// At position length is the null terminating character,
// the last character is actually at position len - 1
int lastIndex = length - 1;
// Stores whether of not we found a palindrome
bool isPalindrome = true;
// Loop through the string checking if the first character is equal to
// the last, second to second last etc...
for (int i = lastIndex; i >= length/2; i--)
{
// Check the palindrome condition
if (input[i] != input[lastIndex - i])
{
isPalindrome = false;
break;
}
}
// Output the result
if (isPalindrome)
{
std::cout << "Palindrome" << std::endl;
}
else
{
std::cout << "Not palindrome" << std::endl;
}
return 0;
}
答案 1 :(得分:-1)
这里你去:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
char y[100], x[100];
cout<<"Enter word"<<endl;
cin>>y;
//Get the size of the word entered
int len = 0;
char*p = y;
while(*p++) len++;
//Check for palindrome
bool palindrome=true;
for(int i=0; i<len/2; ++i){
if(y[i]!=y[len-1-i]) palindrome=false;
}
cout << "palindrome:" << (palindrome?"true":"false") << "\n";
return 0;
}