c语言编程:判定一个字符是否是回文串(回文串是指从开头读和从末尾读均为相同字符的字符串,例如:abcba

2024-11-16 12:40:25
推荐回答(5个)
回答1:

1、首先,在C语言软件中,定义多个整型变量,保存程序中所需操作的数值。

2、定义两个数组,保存输入的字符串和最长回文。

3、输入字符串,保存在变量a中。计算字符串的长度,设置变量k和max的初值。

4、接着,用循环语句实现查找回文,以及最长回文的判断。

5、用if语句判断回文是否偶数,如果条件成立执行以下语句。

6、最后运行程序,输入任一连续字符串,电脑就会判断其中的最长回文,并输出。

回答2:

采用链栈实现算法,代码如下:

#include"stdio.h"

#include"stdlib.h"

typedef char ElemType;

typedef struct stnode

{

ElemType data;

struct stnode *next;

}StNode, *LinkStack;

int huiwen(char str[])

{

int i = 0;

char ch;

StNode *sl = NULL, *p;

while ((ch = str[i++]) != '\0')

{

p = (StNode *)malloc(sizeof(StNode));

p->data = ch;

p->next = sl;

sl = p;

}

i = 0;

while (sl != NULL)

{

p = sl;

ch = p->data;

sl = sl->next;

free(p);

if (ch != str[i++])

return 0;

}

return 1;

}

void main()

{

char string[20];

int hw;

printf("input a string:");

gets_s(string);

hw = huiwen(string);

if (hw) printf("The string is HUIWEN.");

else printf("The string is not HUIWEN.");

}

扩展资料

栈的特点是先进后出,而链表中的头插法正好满足我们的需求,因为头插法后面插入的节点位于链表的开头,所以我们可以使用头插法来插入节点,在弹出节点的时候弹出链表的第一个节点即可,而第一个节点是很容易找出来的,所以可以很轻松地实现栈的压入和弹出操作。

栈是一种是一种实现数据“先进后出”的存储结构,分为静态栈和动态栈,静态栈就是以数组的方式存储数据,动态栈是以链表的方式存储数据;对栈的操作算法,常用的就是压栈和出。

栈的创建:

在创建一个数据结构之前,必须知道这种数据结构由哪些参数组成,栈的本质既然是个链表,它必然由很多节点组成;为了实现“先进后出”这种数据结构,我们需要引进两个参数,一个是栈顶指针(pTop),始终指向栈顶元素。一个参数是栈底指针(pBottom),始终指向栈底元素。

我们知道为了方便描述链表的各种操作,引进了头节点的概念,即为每个链表前面加一个头节点,但并存放有效数据;同样,为了实现栈的操作,我们同样需要一个不存放任何有效数据的节点,并且栈底指针始终指向该节点。

回答3:

c语言编程:判定一个字符是否是回文串(回文串是指从开头读和从末尾读均为相同字符的字符串,例如:abcba
我来答有奖励
love154139
LV.6 2018-04-05聊聊
#include
#include
void main()
{
char s[100],a[100];
int b,i,t;
printf("请输入字符串:");
scanf("%s",s);
b=strlen(s);
t=b;
i=0;
while(i!=t)
{
a[i]=s[b-1];
b--;
i++;
}
a[i]='\0';
if(!strcmp(s,a))
printf("这是回文串!\n");
else
printf("这不是回文串!\n");
}

回答4:

bool symm(unsigned n)

{
unsigned i=n;
unsigned m=0;
while(i>0){
m=m*10+i%10;
i/=10;
}
return m==n;
}
int main()
{ int Val;
cin>>Val;//输入目标数字
bool Res=symm(Val);
cout<return 0;
}
通过除10取余反向读取数字判断

回答5:

#include
#include
void main()
{
char s[100],a[100];
int b,i,t;
printf("请输入字符串:");
scanf("%s",s);
b=strlen(s);
t=b;
i=0;
while(i!=t)
{
a[i]=s[b-1];
b--;
i++;
}
a[i]='\0';
if(!strcmp(s,a))
printf("这是回文串!\n");
else
printf("这不是回文串!\n");
}