用c语言如何实现判断回文?

Python011

用c语言如何实现判断回文?,第1张

下面介绍了几种判断回文的方法:

你提问的第一个地方,比如你输入了个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")}

首先清楚什么是回文。。。我们称正读和反读都相同的字符序列为“回文”,如“abba”、“abccba”、12321、123321是“回文”。

然后再看程序,把长度为n的字符串的每一个字符排下标,即从0到n-1,要判断是否回文,就是把一串字母进行前后比对,即下标0的字符和下标为n-1的字符,1与n-2,2与n-3。。。

for

(i

=

0

i

<

len

/

2

i++)

{

if

(str[i]

!=

str[len-1-i])

{

break

{{{{这里是什么意思啊}}}}}}

//

这里是判断不符号回文的情况,只要两个字符不符合,那这整个字符串就不是,所以break跳出循环判断

}

}

if

(i

==

len

/

2)

{{{{我不懂这里是什么意思}}}}}}

//

长度为n的字符串最多只能比对len

/

2次,那么如果每对都符合,那就是回文啦

{

printf(“%s

shi

hui

wen.\n“,

str)

}

回文数"回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字

就是回文数.

任意某一个数通过以下方式相加也可得到

如:29+92=121 还有 194+491=586,586+685=1271,1271+1721=2992

不过很多数还没有发现此类特征(比如196,下面会讲到)

另外个别平方数是回文数

1的平方=1

11的平方=121

111的平方=12321

1111的平方=1234321

依次类推

3×51=153

6×21=126

4307×62=267034

9×7×533=33579

上面这些算式,等号左边是两个(或三个)因数相乘,右边是它们的乘积。如果把每个算式中的“×”和“=”去掉,那么,它们都变成回文数,所以,我们不妨把这些算式叫做“回文算式”。还有一些回文算式,等号两边各有两个因数。请看:

12×42=24×21

34×86=68×43

102×402=204×201

1012×4202=2024×2101

不知你是否注意到,如果分别把上面的回文算式等号两边的因数交换位置,得到的仍是一个回文算式,比如:分别把“12×42=24×21”等号两边的因数交换位置,得到算式是:

42×12=21×24

这仍是一个回文算式。

还有更奇妙的回文算式,请看:

12×231=132×21(积是2772)

12×4032=2304×21(积是48384)

这种回文算式,连乘积都是回文数。

四位的回文数有一个特点,就是它决不会是一个质数。设它为abba,那它等于a*1000+b*100+b*10+a,1001a+101b。能被11整除。

六位的也一样,也能被11整除

还有,人们借助电子计算机发现,在完全平方数、完全立方数中的回文数,其比例要比一般自然数中回文数所占的比例大得多。例如11^2=121,22^2=484,7^3=343,11^3=1331,11^4=14641……都是回文数。

人们迄今未能找到五次方,以及更高次幂的回文数。于是数学家们猜想:不存在nk(k≥5n、k均是自然数)形式的回文数。

在电子计算器的实践中,还发现了一桩趣事:任何一个自然数与它的倒序数相加,所得的和再与和的倒序数相加,……如此反复进行下去,经过有限次步骤后,最后必定能得到一个回文数。

这也仅仅是个猜想,因为有些数并不“驯服”。比如说196这个数,按照上述变换规则重复了数十万次,仍未得到回文数。但是人们既不能肯定运算下去永远得不到回文数,也不知道需要再运算多少步才能最终得到回文数。