c语言判断字符串是否为回文

 我来答
teddy_0416
2010-04-12 · TA获得超过556个赞
知道小有建树答主
回答量:335
采纳率:0%
帮助的人:339万
展开全部
#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;
}
txdyr36
2017-12-27
知道答主
回答量:17
采纳率:66%
帮助的人:9.2万
展开全部
#include <stdio.h>
#include<string.h> //strlen函数的头文件
int main()
{
int j,i,n;
char a[999],b[999];
scanf("%s",a); //输入字符串
n=strlen(a); //用strlen函数读取字符串长度(长度到\0停止)
for(i=0,j=n-1;i<n;i++,j--) //循环将字符串a逆序赋值给b
b[j]=a[i];
for(i=0;i<n;i++)
{
if(b[i]!=a[i]) break; //判断是否回文
}
if(i==n) printf("Yes"); //如果从第1位到n都相同 则回文 输出Yes
else printf("No");
return 0;
}
追问
可以弄成可以进行多组数据测试的吗?
追答
#include 
#include //strlen函数的头文件
int main()
{
int j,i,n,m;
char a[999],b[999];
scanf("%d",&m);
while(m--){
getchar();//清除回车,读取输入的字符
scanf("%s",a); //输入字符串
getchar();//清除回车,读取输入的字符
n=strlen(a); //用strlen函数读取字符串长度(长度到\0停止)
for(i=0,j=n-1;i<n;i++,j--) //循环将字符串a逆序赋值给b
b[j]=a[i];
for(i=0;i<n;i++)
{
if(b[i]!=a[i]) break; //判断是否回文
}
if(i==n) printf("Yes"); //如果从第1位到n都相同 则回文 输出Yes
else printf("No");
}
return 0;
}
你试试这个。兄弟,如果觉得OK的话点个赞或好评一下吧
采纳一下也行!!!!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黄邦勇帅哥哥
2010-04-12 · TA获得超过3987个赞
知道大有可为答主
回答量:1199
采纳率:100%
帮助的人:486万
展开全部
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");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风清扬song
2010-04-11
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
#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");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiangtanzyc
2010-04-12 · 超过13用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:32.8万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式