当前位置:首页 » 编程语言 » 递归回文字符串c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

递归回文字符串c语言

发布时间: 2022-08-06 17:15:22

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

#include<stdio.h>

#include<string.h>

int hw(char *s,int a,int b)

{return s[a]==s[b]&&(a>=b-2||a<b-2&&hw(s,a+1,b-1));

}

int main()

{ char s[300];

gets(s);

printf("%s%s是回文。 ",s,hw(s,0,strlen(s)-1)?"":"不");

return 0;

}

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

#include<stdio.h>
inthuiwen(char*s,intn)
{if(n<2)return1;
if(*s!=*(s+n-1))return0;
returnhuiwen(s+1,n-2);
}
intmain()
{chars[200];
inti,k;
scanf("%d%*c",&k);
while(k--)
{gets(s);
for(i=0;s[i];i++);
printf("%s ",huiwen(s,i)?"Yes!":"No!");//运行完了才加上的"!"
}
return0;
}

③ C语言用递归判断数字是否为回文数

首先求出数字的长度n,
然后判断第1位和第n位是否相等
第i位和第n+1-i位是否相等。对i循环

单独写一个函数求出这个数字第i位的大小
int GetI(int i,int number){
if(i==1)
return number%10;
return GetI(i-1,number/10);
}

④ C预言递归回文字符串

一定要递归吗?
不是递归的方法:http://hi..com/love7mlove/blog/item/ca88ea38df8b802b97ddd809.html

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

#include <stdio.h>
#include <string.h>
int main(void)
{
char p[100] = {0};
int i, t, n;
gets(p);
n = t = strlen(p);
--n;
t /= 2;
for (i = 0; i<t; ++i)
{
if (*(p + i) != *(p + n - i))
{
break;
}
}
if (i >= t)
{
printf("YES ");
}
else
{
printf("NO ");
}
return 0;
}

⑥ C语言编程,用递归求回文字符串

#include<stdio.h>
#include<string.h>

#defineN50

voidinput(chara[]){
charc;
inti;
printf("请在下面输入字符串: ");
for(i=0;i<N;i++){
scanf("%c",&c);
if(c=='q')break;//qtoquit!
while(c<'a'||c>'z')scanf("%c",&c);//只读入小写字母
a[i]=c;
}
a[i]='';//添加串结束符
}

intfun(chara[],intlength,inti){
if(i==length/2)return1;
if(a[i]!=a[length-i-1])return0;
fun(a,length,i+1);
return1;
}

intmain(){
chara[N];
intlength;
inti=0;
input(a);
length=strlen(a);
// printf("%d",length);
if(fun(a,length,i))printf("yes ");
elseprintf("no ");
return0;
}

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

#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;
}

⑧ 回文字符串——递归

#include<stdio.h>
#include<string.h>

int main()
{
int i=0,n,k=0;
char a[20],*p,*q;
scanf("%s",a);
n=strlen(a);
p=a; q=p+n-1;
while(i<(n/2+1)&&q>p)
if(*p==*q) { k++;i++; p++; q--; }
if(k==n/2) printf("Yes\n");
else printf("No\n");

system("pause");
return 0;
}
这是对你的简化版。错误之处一一道来:
1,while语句q>p有错误,因为其后的p,q一直未变。
2,while中i<n多余,只需到n/2+1即可。
3,if语句应该是字符比较 *(p+i)==*(q-i)
4,if语句 { k++; i++; } 必须合在一起,不然i是不变的。
5,if语句,p,q没有变。所以while中只是i<n有效
6,最后判断n%2取余没有比较。

⑨ C语言 递归函数 写 回文 程序

#include <stdio.h>
int palindrome(char *string);
void main()
{int i;
char str[100],*string=str;
gets(string);
i=palindrome(string);
printf("i=%d\n",i);
getch();
}
int palindrome(char *string)
{int n=0,i,flag=1;
char *p=string;
while(*p!='\0')
{n++;p++;}
for(i=0;i<=n/2;i++)
{if(*(string+i)==*(string+n-i-1)) ;
else return 0;
}
return 1;}

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

#include<stdio.h>
#include<string.h>
char _str[1005];
int IsH(char _str[],int _L,int _R)
{
if(_L>=_R)return 1;
if(_str[_L]-_str[_R])
return 0;
return IsH(_str,_L+1,_R-1);
}
void main()
{
while(gets(_str),strcmp(_str,"#"))//输入#结束
printf("%s\n",IsH(_str,0,strlen(_str)-1)?"Yes":"No");
}