C语言判断回文字符串
//你的错误在于递归调用的时候,i每次都是0,所以要用static int i = 0
#include stdio.h
#include stdlib.h
#include string.h
int hui(char a[10000])
{
int n;
static inti=0; //这里改为static int i = 0就对了,因为你递归调用i的时候每次都把i置为0了,那肯定不行的,因为你的i是在变得,所以用static
n=strlen(a);
if(i=n-i-1)
return 1;
else
{
if (a[i]==a[n-i-1])
{
i++;
hui(a);
}
else
return 0;
}
}
int main(int argc, char *argv[])
{
char a[10000];
gets(a);
if (strlen(a)==0) {printf(“No\n”);}
else
{
if(hui(a))
printf(“Yes\n”);
else
printf(“No\n”);
}
return 0;
}
c语言 回文字符串判断
你把Judger改成我的这样就行了。
int Judger(char a[])
{
int n=0,i,j;
char *pStar;
char *pEnd;
n=strlen(a);
pStar=a;
pEnd=(pStar+n-1);
for(; pStar pEnd;pStar++,pEnd–)
if(*pStar!=*pEnd) return 0;
return 1;
}
C语言大侠。判断字符串是否是回文串,是输出yes 否则no input:hello world output:no oppo yes level yes
代码可以这么写,你这个有点费事
p=a;
q=p+strlen(a)-1;
while(pq)
if(*p++!=*q–)
break;
if(p=q)
printr(“是回文”);
else
printf(“不是回文”);
c语言 回文串的判断 麻烦高手们帮帮忙
#includestdio.h
#includestring.h
int ReverseStr(char *str)
{//函数返回1则说明可以达到回文的效果,否则不能
int i,j,delcount;
j=strlen(str)-1;//记录尾下标
delcount=0;//记录通过删除字符的次数
for(i=0;ij;i++,j–)
{//首尾扫描匹配字符串
if(delcount1)//若通过删除的次数大于一次则返回
return 0;
if(str[i]==str[j])//若检测到首尾字符相等则继续比较
continue;
else
{//当不相等的时候,则进行试探是否可以达到回文的效果
if(str[i+1]==str[j]i+1j)
{//若前半部分被当前检测的字符的后一个字符与后半部分当前被检测的字符相等
//则说明可以通过删除前半部分当前被检测的字符来达到回文的效果,则将下标向后移动
i++;
delcount++;
}
else if(str[i]==str[j-1]ij-1)
{//若后半部分被当前检测的字符的前一个字符与前半部分当前被检测的字符相等
//则说明可以通过删除后半部分当前被检测的字符来达到回文的效果,则将下标向前移动
j–;
delcount++;
}
else if(str[i]!=str[j](i+1j||ij-1))
{//通过前后删除一个字符都不能够达到效果则说明不能通过这种方式达到匹配则不能构成回文
return 0;
}
}
}
return 1;
}
int main()
{
char InputStr[80];
//输入字符串
printf(“输入一个字符串:”);
gets(InputStr);
//判断是否可以通过删除一个字符或0个字符以达到使字符串为回文
int flag=ReverseStr(InputStr);
if(flag)
printf(“Y\n”);
else
printf(“N\n”);
return 0;
}
C语言判断一串字符是否为回文串
需要比较整个字符串然后得到结论输出yes而不是只判断了一个字符相等就输出
#includestdio.h
#includestring.h
const int maxn=256;
int main(){ int i; char str[maxn]; int len,b;
scanf(“%s”,str); len=strlen(str); //输入完了字符串再计算长度,不能在输入之前算
for(i=0,b=1;i=len/2;i++)
if(str[i]!=str[len-i-1]){ b=0; break; } //如果发现不相等则判定不是回文
if ( b!=0 ) printf(“yes”); else printf(“no”); //等循环完毕再得出结论
return 0; //main前面有int修饰,因此必须返回整型值
}
输入一个字符串,判断它是不是回文 C语言
用两头凑法,找到字符串的最后一个字符,与第一个字符比较。然后各自向中间移动,逐个比较。如果比较中出现不同,则不是回文。当二者相遇时,一直都相同,则字符串为回文。
参考代码如下:
int huiwen(char *s)
{
char *p = s;
while(*p) p++;//找到结束符\0的位置。
p–;//\0的前一个字符,就是字符串的最后一个字符。
while(sp)
{
if(*s != *p) return 0;//发现不同,不是回文。
s++;
p–;//二者向中间移动。
}
return 1;//到相遇后一直相同,是回文。
}
int main()
{
char s[100];
scanf(“%s”,s);//输入字符串。
if(huiwen(s))//判断是否回文并输出结果。
printf(“%s是回文字符串\n”,s);
else
printf(“%s不是回文字符串\n”,s);
return 0;
}