c语言函数回文数 c语言函数回文数编程

c语言回文数

#includestdio.h

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、网络空间、营销软件、网站建设、萨尔图网站维护、网站推广。

#includestring.h

#define MAX 100   //预定义数组长度

int reverse(char a[])//判断是否回文,数字也当字符处理

{

int n=strlen(a);

int i;

for(i=0;in;i++)

{

if(a[i]!=a[n-i-1])

return 0;  //从首尾开始比较,有任一不相等,不是回文,返回0

if(i==n-i-1) //全相等,是回文。返回1

return 1;

}

}

int main(){

char a[MAX];

while(scanf("%s",a)!=EOF)//接受输入 CTRL+Z结束输入

{

if(reverse(a))

printf("YES\n");

else

printf("NO\n");

}

return 0;

}

C语言中,什么是回文数?

回文数"回文数"是一种数字.如: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≥5;n、k均是自然数)形式的回文数。

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

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

c语言求回文数

任取一个十进制整数,用下面的方法可以求出一个回文数:

把这个数字的各个位,颠倒前后位置,形成一个新数,再和原数相加,得到的和,就可能是一个回文数。

如果不是回文数,就再重复上述的步骤,则最终可得到回文数。

C语言是一种计算机程序设计语言。

它既有高级语言的特点,又具有汇编语言的特点。

它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛。

C是一种计算机编程语言。就是说可以用C编写指令清单交给计算机去执行。

C是当前正在使用的成千上万种编程语言之一。它已经有几十年的历史了。

因为它功能强大而且效率很高,所以受到了程序员们广泛的欢迎。

C还是一种容易学习的语言,和其他一些语言相比,C的风格稍有点古怪,但您会很快适应的。

C语言求回文数

#includestdio.h

#includestring.h

#includestdlib.h

int svalue(long);

void main()

{

long i,j,k;

for(i=11;i1000;i++)

{

j=i*i;

k=j*i;

if(svalue(i)svalue(j)svalue(k))

printf("%ld\t%ld\t%ld\n",i,j,k);

else

continue;

}

}

int svalue(long m)

{

int a[9] = {0,0,0,0,0,0,0,0,0};      //1000的立方为1000000000

int i = 0,j = 0;

a[0] = m / 100000000;

a[1] = m % 100000000 / 10000000;

a[2] = m % 10000000 / 1000000;

a[3] = m % 1000000 / 100000;

a[4] = m % 100000 / 10000;

a[5] = m % 10000 / 1000;

a[6] = m % 1000 / 100;

a[7] = m % 100 / 10;

a[8] = m % 10;

for(i=0;i9;i++)

{

if(0 == a[i])

{

j++;

}

else if(0 != a[i])

{

break;

}

}

for(i=j;i9;i++)

{

if(a[i] != a[8+j-i])

{

return 0;

}

}

return 1;

}

回文数 C语言

//ok了。。

#includestdio.h

#includestring.h

//判断是否是回文,处理相加,判断是不是还找不到。

bool f(char str[],int n)

{

int i,j;

char ans[100];

int e,d;

for(i=0;str[i]!='\0';i++);//i为长度

for(j=0;ji;j++)

ans[j]=str[i-1-j];//逆序赋值给ans

ans[j]='\0';

if(strcmp(ans,str)==0) return false;//找到了,返回。

//printf("%s %s\n",str,ans);

//高精运算

e=0;

for(j=0;ji;j++)

{

d=str[j]-'0'+ans[j]-'0'+e;

e=d/n;

str[j]=d%n+'0';

}

if(e!=0) {str[j]=e+'0';j++;str[j]='\0';}

return true;

}

int main()

{

int step;

char ans[100];

char m[100];//只能用高精度算

int n;

while(scanf("%d%s",n,m)!=EOF)

{

step=0;

strcpy(ans,m);

while(f(ans,n))

{

step++;

if(step30) break;

}

if(step30) printf("impossible\n");

else printf("STEP=%d\n",step);

}

return 0;

}


网站标题:c语言函数回文数 c语言函数回文数编程
文章网址:http://scyanting.com/article/doosiod.html