下面介绍了几种判断回文的方法:
你提问的第一个地方,比如你输入了个5个字符的字符串 ,abcba 先判断第一个和最后一个是否相同 ,再判断第二个和倒数第二个 。
如果相等程序正常执行 ,如果不相等 ,break就跳出循环 ,你提问的第二个地方就是i 如果等于 len/2说明 上边循环式正常退出 。
那就是说前后一一对比都相同 ,是回文数 ,不等于len/2说明是由break退出导致,既前边和后边某一位不相同
若输入 abbci=0str[0]='a' str[4-1-0]='c' 执行break跳出for循环循环结束 i=0 所以判断不是回文若输入abbai=0str[0]='a' str[4-1-0]='a' i=1str[1]='b' str[4-1-1]='b'i=2for循环条件不满足i
这还有另外一种方法,即include "stdio.h" main() { char str[50]int p,i,jprintf("Input:")scanf("%s",str)printf("Input the string is:%s\n",str)p=strlen(str)for(i=0,j=p-1i=j) printf("huiwen")else printf("not a huiwen")}
【错误分析】1、把函数huiwen()中的变量“s”都改成“ps”,写代码要细心哦~
2、判断是否回文的时候,只要有一个对应不等,就无需判断啦~(显然此时不是回文)
【注】只在你的代码上小小修改了一下,就可以啦~
望采纳哦~
有问题再问哦~
o(∩_∩)o
#include
<stdio.h>
#include
<string.h>
int
huiwen(char
*ps)
int
main()
{
char
s[100]
int
flag
gets(s)
flag=huiwen(s)
if(flag)
printf("YES!\n")
else
printf("NO!\n")
return
0
}
int
huiwen(char
*ps)
{
int
i,j,z=1
j=strlen(ps)-1
for(i=0i<ji++){
if(ps[i]!=ps[j]){
z=0return
z
}
j--
}
return
z
}
所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。
以下是判断一个数是否为回文数的代码:
大致思路就是将一个数反着排列一遍,如果和原先的数一样,那么就是回文数。这个排列过程用到了余数和整除。比如986,经过排列后为689,就不是回文数。
扩展资料:
判断一个字符串是否为回文: