天河客运站官网_如何用c语言找出1~999中的所有回文数

2020-08-13

如何用c语言找出1~999中的所有回文数


依照数学,可以得知1-999中的数包括三类:1 一位数。只有一位,每个都是回。2 两位数。和十位相同的两位数是回文数,即形式为aa的两位数,a值为1-9。3 三位数。个位和百位相同的三位数都是回文数,即形式为aba的三位数,a值为1-9,b值为0-9。
综合以上规律,可以写出以下程序:#include
intmain()
{
inti,j;

for(i=1;i<10;i++)
{
printf("%d,",i);//一位数
printf("%d%d,",i,i);//两位数
for(j=0;j<10;j++)
printf("%d%d%d,",i,j,i);//三位数
printf(" ");//为方便阅读结果,加一个换行。
}

return0;
}

该函数输出为:以上是根据数学规律,打印出所有符合要求的回文数。另外还有编程中最常用的暴力尝试方法。即对1-999中的所有数字,每个数都求其反序数字,如果与原值相等,则输出。这种方式可以按大小顺序输出所有的回文数,需要计算量较大,用时比上一种方法会略长。代码如下:#include

intreverse(intv)
{
intr=0;

while(v)
{
r=r*10+v%10;//取v的结尾数字,置于r的尾端,从而达到反序效果。
v/=10;//将剩余各个位向右移动一位。
}

returnr;//返回结果
}
intmain()
{
inti,j;

for(i=1,j=0;i<999;i++)
{
if(i==reverse(i))
{
printf("%-4d",i);//每个输出占4列,达到对其效果。
j++;
if(j%10==0)printf(" ");//每10个数换行一次。
}
}
return0;
}

输出

#include

void main(){

int i;

////个位数都的。
for(i=1;i<10;i++)
printf("%d\n",i);
////两个位十位相同的就是
for(i=10;i<100;i++)
if(i/10==i%10)
printf("%d\n",i);
////三位数个位一样的就是
for(i=100;i<1000;i++)
if(i/100==i%10)
printf("%d\n",i);

return;
}本回答被提问者采纳

inti,j;
for(i=1;i<=9;i++)
{
printf("%d",i); //1位
printf("%d",i*11); //2位

for(j=0;j<=9;j++)
printf("%d",i*101+j*10); //3位
printf(" ");
}

return0;


c语言程序设计编求回文数的函数

#includeint main(){int m[16], n, i, t, count=0;long unsigned a, k;printf("No. number it's square(palindrome) ");for( n=1; n<256; n++ ) /*穷举n的取值范围*/{k=0; t=1; a=n*n; /*n的平方*/for( i=0; a!=0; i++ ) /*从低分解数a的每一位存于数组m[1]~m[16]*/{
m[i] = a % 10;a /= 10;}for(; i>0; i--){k += m[i-1] * t; /*t记录某置对应的权值 */t *= 10;}if(k == n*n)printf("%2d%10d%10d ", ++count, n, n*n);}return 0;}扩料:C语言在编写的时候需要说明的是:1、一个C语言源程序可以由一个或多个源文件组成。2、每个源文件可由一个或多个函数组成。3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(结构体、联合体、枚举型的声明的“}”后要加“ ;”)。6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。参考资料:百度百科-回文数
程下:#include"stdio.h"
intmain()
{
intu,m;
intsum=0;
printf("请输入要判断的数u=");
scanf("%d",&u);
m=u;
while(m)
{
sum=sum*10+m%10;
m=m/10;
}
if(sum==u)
printf("u是回");
else
printf("u不是回文数");
printf(" ");
return0;
}

程序运行结假设输入一回文数12321

参考代码:
#include
int check(int *data,int n){
int i,j;int x=0,y=0;
while(n!=0){*(data+y)=n%10;n=n/10;y++;}
*(data+y)='\0';
for(i=0,j=y-1;i<=j;i++,j--){
if(*(data+i)==*(data+j)){return 1;}}
return 0;
}

void main(){
int i,x,a[10],num=0;
printf("请一个正整数:");
scanf("%d",&x);for(i=1;i<=x;i++) num=num+separate(a,x);
printf("%d\n",num);
}追问

刚学c,可以写一个简单一点儿的吗?这个实在是不懂追答

这个已经很简单了呀。
check函数用来检查回文,是:返回1否:返回0
统计总数就是回文的个数。
对了,一个地方写错了,倒数第三行应该是:
scanf("%d",&x);for(i=1;i<=x;i++) num=num+check(a,x);追问

#include#includeint fun(int n) {int x,temp,t;for(n=1;n0){t=x%10;te本回答被网友采纳
c语言如何求回文数


1、首先打开vc6.0,新建控制台项目2、然后添加头文件。3、然后我们添加main主函数。4、然后我们定6个long型变量。5、然后我们使用scanf给input赋值。6、然后我们分解个位、百位、千位、万位。7、然后我们使用if判断。8、然后我们运行程序,看看结果已经能判断回文数。#include
#include

#defineMAX100//预定组长度
intreverse(chara[])//判断是否回文,也符处理,所以,不管是数字还是字符串,都能判断
{
intn=strlen(a);
inti;
for(i=0;i {
if(a[i]!=a[n-i-1])
return0;//从首尾开始比较,有任一不相等,不是回文,返回0
if(i==n-i-1)//全相等,是回文。返回1
return1;
}
}
intmain(){

chara[MAX];

while(scanf("%s",a)!=EOF)//接受输入,将输入当字符串来处理CTRL+Z结束输入
{
if(reverse(a))
printf("YES ");
else
printf("NO ");
}

return0;
}

c语言回文数方法:生成逆向判断与原数是否,相同则是,不同则不是。代码:#include
voidmain()
{
intx=1,y,t;
printf("inputn:");scanf("%d",&x);//输入数据
y=0;
t=x;//保存下原数
do{
y=y*10+t%10;
t/=10;
}while(t);//原数逆序
if(y==x)
printf("yes! ");
else
printf("no! ");
}

#include
main()
{intn,i,j,k,l,m,sum,a[100],b[100];
while(1){
scanf("%d",&n);
for(i=0;i scanf("%d",&a[i]);
for(i=0;im=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;jif(b[k-j-1]==b[j])l++;
if(l>=k/2)printf("%d ",sum);
elseprintf("NO ");
}
printf(" ");
}
}

如图所示,望采纳。。。。。。#include
#include
#include
main()
{
inti,len,flag,cnt=1,num,numrev,addnum;
charstr[20]={0},strRev[20]={0},hui[20]={0};
gets(str);//输入数字以字符串接收
num=atoi(str);//转为数字
strcpy(strRev,strrev(str));//将接字符串逆序
numrev=atoi(strRev);//转逆序的数字
while(1)
{
addnum=num+numrev;//两个数字相加
printf("STEP%d:%d+%d=%d ",cnt,num,numrev,addnum);//输出
itoa(addnum,hui,10);//将相加后的数字转为字符串
len=strlen(hui);//求长度
flag=0;//标识是否是回文
for(i=0;i{
if(hui[i]!=hui[len-i-1])
{
flag=1;//如果不是回文继续
break;
}
}
if(!flag)//根据上面标识符判断是否回文
{
printf("%d%d ",cnt,addnum);//是户
break;
}elseif(cnt++>=30)//判断是否大于等于30次
{
printf("0 ");
break;
}
num=addnum;//将和作为下次运算的第一个数字
strcpy(strRev,strrev(itoa(num,str,10)));//根据第一个数逆序出第二个数
numrev=atoi(strRev);//字符串转数字
}
}
用C语言编写程序,判断一个数是否为回文数。


1、首先打开vc6.0,新控制台项2、添加头文件。3、添加main主函数。4、定义6个long型。5、使用scanf给input赋值。6、分解个位、百位、千位、万位。7、使用if判断。8、运行程序,看看结果。#include
intseparate(int*data,intn)
{
inti=0;
while(n>0)
{
data[i++]=n%10;
n/=10;
}
returni;
}
intjudge(int*data,intlen)
{
inti,j;
for(i=0,j=len-1;iif(i>=j)
return1;
else
return0;
}
intmain()
{
intn,len,r;
intdata[20];
scanf("%d",&n);
len=separate(data,n);
r=judge(data,len);
if(r==1)
printf("%d文数 ");
else
printf("%d不是回 ");
}本回答被提问者采纳