當前位置:首頁 » 編程語言 » 遞歸迴文字元串c語言
擴展閱讀
哈登後撤步二代什麼配置 2022-08-16 11:25:30

遞歸迴文字元串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");
}