C语言 判断回文字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 判断回文字符串相关的知识,希望对你有一定的参考价值。

编写一个名称为fun的函数,功能为判断字符串是否为回文字符串,在main函数中输入字符串,调用fun函数判断所输入的字符串是否为回文字符串。

要求不使用指针,用数组的方法
注意调用fun函数判断,还有最好能用到以下思想:
int i,j,n;
n=strlen(str);
for(i=0,j=n-1;i<=(n-1)/2;i++,j--);
if(str[i]!=str[j]) break;
……
if(i>j)
……
……

参考技术A #include <stdio.h>

/*fun()函数:传入一个字符数组,如果是回文序列返回1,不是就返回0*/
int fun(char a[])

int i,j,n=0;
while(a[n]!='\0') n++; /*计算传入字符串(数组)长度*/
n--; /*跳出while循环时 a[n]='\0',故n--*/
for(i=0,j=n;i<j;i++,j--)
if(a[i]!=a[j]) break;
if(i>=j) return 1;
return 0;


int main()

char str[20];
puts("输入一个字符串:\n");
gets(str);
if(fun(str)) printf("%s 是回文序列\n",str);
else printf("%s 不是回文序列\n",str);
return 0;
参考技术B #include"stdio.h"
panduan(char str[],int count1,int count)/*count1是中间位置,count是字符串个数*/

if(str[count1]==str[count-1-count1]&&count1==0)/*递归结束的条件,当0与最后一个相等返回1*/
return(1);
else if(str[count1]==str[count-1-count1])/*当中间的相等,开始向两边移动,当count1为0时结束*/

panduan(str, count1-1,count);/*递归*/

else
return(0);/*如果不满足条件的话返回0*/


void main()

char str[20],c;
int i=0,count=0,j,k;
printf("请输入一个字符串\n");
while((c=getchar())!='\n')

str[i++]=c;
count++;

j=count/2;
k=panduan(str,j,count);
if(k==1)

printf("输入的字符串是回文串\n");

else
printf("输入的字符串不是回文串\n");
参考技术C #include<iostream.h>
#include<cstring>
int fun(char *str)

int len,half;
len=strlen(str);
half=len/2;
for(int i=0;i<half;i++)
if(str[i]!=str[--len])
break;
if(i>=half)
return 1;
else
return 0;

void main()
char string[1024];
cout<<"please input a string:"<<endl;
cin.getline(string,1024);
if(fun(string))
cout<<"回文字符串"<<endl;
else
cout<<"不是回文字符串"<<endl;
参考技术D int fun( char str[] )

int i,j,n;
n=strlen(str);

for(i=0,j=n-1;i<=(n-1)/2;i++,j--)
if(str[i]!=str[j]) break;
if(i>j) return 1;
return 0;



void main()

char a[80];
gets(a);
if ( fun(a)==1 ) printf( "回文\n");
else printf("非回文\n");
本回答被提问者采纳

用递归判断字符串是不是为回文串(C语言) 用递归判断字符串是不是为回文串(C语言)

用递归来写程序,递归我不会写啊,那位大牛能帮帮忙,感谢感谢!

参考技术A #include <stdio.h>
#define SIZE 50
int isPalindrome(char str[]);
int elementSize=0;
static int i=0;
int main()

int j=0,result;
char element,str[SIZE];
printf("请输入字符串,以回车结束:\n");
/*以下用循环结构读入字符数组的元素,防止了因字符串中含有空格而不能全部读入的情况*/
scanf("%c",&element);
while(element!='\n')

str[j]=element;
elementSize++;//记录了数组中已有元素的个数
j++;
scanf("%c",&element);


if(isPalindrome(str))
printf("该字符串是回文字符串\n");
else
printf("该字符串不是回文字符串\n");

// system("pause");
return 0;

/*函数功能:判断字符串是否为回文串*/
int isPalindrome(char str[])

/*把数组元素前后对应比较,即第一个元素与最后一个元素比较是否相等,依此类推*/
if(i>=elementSize-i-1)//说明是回文串
return 1;

else if(str[i]==str[elementSize-i-1])

i++;//i为全局静态变量
isPalindrome(str);


else //出现不相等的情况,说明不是回文串,返回0
return 0;
本回答被提问者采纳

以上是关于C语言 判断回文字符串的主要内容,如果未能解决你的问题,请参考以下文章

c语言,利用递归判断回文

用递归的方法实现判断回文字符c语言

回文字符串——递归。C语言。

C语言题目,构造回文串。大神进。

用c语言实现字符串的回文,有要求如下:

C语言:编写一个测试一个串是不是为回文的递归函数,是回文,返回1;不是,返回0。