设计回文判断程序,对输入的字符串进行回文判断

、设计回文判断程序,对输入的字符串进行回文判断
要求:输入的字符串字数不限 ;构造栈;构造队列; 使用栈
和队列进行判断
我人C语言还在基础学习阶段,上面的题目几乎是不懂,希望有高人指点
最新回答
客串情人

2024-11-05 08:49:57

“构造栈;构造队列; 使用栈
和队列进行判断”这个我也不是太懂。
我在网上看到过回文,使用了好多复杂的函数,我都还没学过。

不过我自己写了一个,你看看,原理很简单。
用了.substr函数 for循环 getlin(提取一句话,遇回车终止)
是在C++里写的,不知道在C里能不能用。
<这里在C++的getline(cin,stringname函数有个bug(第一次从键盘getlin输入两个回车才能getlin,但是第二个回车会保存到下一次的getlin)所以循环getline时会出错> 我把循环去掉了。

//*************************************************************
//Palindrome Judgment program 回文判断程序 U6ex4 page235
//cin a sentence,cout its characters in reverse order
//and judgment whether the input line is a palindrome
//*************************************************************
#include<iostream>
#include<string>
using namespace std;

string sen;
string pal;//palindrome回文
int len,i,j;//len=length字符串的长度,i是for循环变量,j判断倒序与正序相同字符的个数
//如果它等于字符串总的长度,即为回文。
void main()
{
cout<<"please input a sentence\n";
getline(cin,sen);

cout<<"the reverse order is:\n";
len=sen.length();
j=0; //倒序与正序相同字符的个数,赋初值0

for(i=0;i<len;i++)
{
pal=sen.substr(len-i-1,1);
cout<<pal;

if(pal==sen.substr(i,1))
j++;
}

if(j==len)
cout<<endl<<"this sentence IS a palindrome\n";
else
cout<<endl<<"this sentence is NOT a palindrome\n";

}