⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 回文判断.cpp

📁 有回文字判断
💻 CPP
字号:
/*计算机071 冯一超编写的回文判断
利用栈进行回文字符串的判断 原创程序  
程序说明:该程序实现回文字符串的判断,两个字符创用'&'链接,'@'结束
'@'之后的字符将被忽略,'@'号可以省略,但链接符'&'不能省略
例如:abc&cba      将被判断为  满足条件
      abc&cba@     将被判断为  满足条件
	  abc&cba@fjs  将被判断为  满足条件
	  abc&cb       将被判断为  不满足条件
	  abc&cb@a     将被判断为  不满足条件
	  abccba       将被判断为  不满足条件
*/

#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 50
#define OK 1
#define ERROR 0


typedef struct//定义一个栈
{
	char elem[MAXSIZE];
	int top;
}seqstack;


int judge()
{
	seqstack *x=(seqstack *)malloc(sizeof(seqstack));//创建一个栈
	x->top=-1;//栈置为空
	char ch;
	printf("请输入字符串:");
	ch=getchar();//输入一个字符(注:getchar()的用处是获取一个字符,但是在用户输入enter之前会把所有的字符存入缓存区,包括enter)
	while(ch!='&')//循环遇到&结束
	{
		if (ch=='\n')//根据题意,在遇到'&'之前如果用户输入了enter,则enter的之前的字符串一定不是回文字符串,直接返回ERROR
			return ERROR;
		x->top++;//否,则入栈
		x->elem[x->top]=ch;
		ch=getchar();//读取下一个字符(注:此时不需要用户输入,直接从缓存区读取字符)
	}
	//至此为止,所有'@'之前的字符均入栈,'&'则被存放在变量ch中
	ch=getchar();//获取'ch之后的'第一个字符
	while (ch!='@')//循环遇到'@'结束
	{
		if (ch==x->elem[x->top])//如果当前字符与栈顶字符相同,则出栈
		{
			x->top--;
		}
		else
			return ERROR;//不同,则说明不符合回文的条件,返回错误提示
		if (x->top==-1)//当栈空时,说明所有栈内的字符均已出栈
		{
			ch=getchar();//此时,获取下一个字符
			if (ch=='\n'||ch=='@')//若这个字符不是'@'或'\n',说明有多余的字符,例如这种情况:abc&cbaa,此时显然不满足回文条件
				return OK;
			else 
				return ERROR;
		}
		ch=getchar();//从缓存区获取下一个字符
			
	}
}

int main()
{
	int a; 
	a=judge();
	if (a==OK)
		printf("满足条件!!");
	else
		printf("不满足条件!!");
	getchar();
	return 0;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -