c语言如何求回文数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言如何求回文数相关的知识,希望对你有一定的参考价值。
c语言如何求回文数
1、首先打开vc6.0,新建一个控制台项目。
2、然后我们添加头文件。
3、然后我们添加main主函数。
4、然后我们定义6个long型变量。
5、然后我们使用scanf给input赋值。
6、然后我们分解个位、百位、千位、万位。
7、然后我们使用if判断。
8、然后我们运行程序,看看结果已经能判断回文数。
参考技术A #include<stdio.h>#include<string.h>
#define MAX 100 //预定义数组长度
int reverse(char a[])//判断是否回文,数字也当字符处理,所以,不管是数字还是字符串,都能判断
int n=strlen(a);
int i;
for(i=0;i<n;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;
参考技术B 回答
过年好,我是百度知道生活领域答主无上泉,很高兴为您作答。
正在作答,请稍等一下哟
计算回文数个数的方法有两种:方法一: 从两端向中间(中间向两端)逐个比较判断各个元素是否相同。如果从始至终都是相同的,那么就是回文数,否则不是回文数。方法二: 回文数的个数是有规律的:一位数中回文数个数:9 二位数中回文数个数:9 三位数中回文数个数:90 四位数中回文数个数:90 五位数中回文数个数:900 六位数中回文数个数:900 ...... 解释如下:对于位数为偶数的回文数,我们以六位数中的回文数个数的计算为例:【123321】左半边和右半边是相同的,我们这样想,三位数的数字从100开始到999结束,一共有999-100+1个数,也就是900,这900个数都可以构成回文数,所以六位数中的回文数个数为900。四位数同理。。。 对于位数为奇数的回文数,我们以七位数为例【1234321】中间的一位有0~9十种情况,再乘以999-100+1=900,结果等于9000。 结论为:数字每增加两位数,回文数的个数扩大10倍。
参考技术C #include<stdio.h>main()
int n,i,j,k,l,m,sum,a[100],b[100];
while(1)
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
m=a[i];k=0;l=0;sum=0;
b[0]=m%10;sum=b[0];
while(m)
m/=10;
k++;
b[k]=m%10;
sum+=b[k];
for(j=0;j<k/2;j++)
if(b[k-j-1]==b[j]) l++;
if(l>=k/2) printf("%d\\n",sum);
else printf("NO\\n");
printf("\\n");
如图所示,望采纳。。。。。。
参考技术Dc语言判断回文数方法:生成逆向数,判断与原数是否相同,相同则是,不同则不是。
参考代码:
#include <stdio.h>void main()
int x=1, y,t;
printf("input n: "); scanf("%d", &x ); //输入数据
y=0;
t=x; //保存下原数
do
y=y*10+t%10;
t/=10;
while(t); //原数逆序
if ( y==x )
printf("yes!\\n");
else
printf("no!\\n");
求回文数
1.问题梗概:
寻找并输出11~999之间的数m,它满足m,m平方,m立方均为回文数。
2:问题分析:
首先,个位数一定不是回文数,因为不存在对称问题。当最低位(个位)和最高位(百位)数字相同时,则说明这个数是回文数。比如151,969,1441,15651等等。那我们怎样从编写程序来判断这个数是否为回文数呢,则可以通过取余的方式来获得一个新数,从而与原数相比较。
代码如下:
int Palindrome(int x)
int number=x;
int m=0;
while (number > 0)
m= m * 10 + number % 10;
number /= 10;
return m == x;
通过返回m和x是否相等(非1即0),可以在主函数中插入一个for循环,来一次判断11~999有多少个数时回文数,最终将它们打印出来
代码如下:
int main()
int i;
for (i = 11;i < 1000;i++)
if (Palindrome(i) && Palindrome(i*i) && Palindrome(i*i*i))
cout << "i=" << i << endl;
cout << "i*i=" << i* i << endl;
cout << "i*i*i" << i*i *i << endl;
return 0;
3.问题结果:
最终结果为m=11,101,111时,它本身及平方和立方都是回文数。
以上是关于c语言如何求回文数的主要内容,如果未能解决你的问题,请参考以下文章