回文数C语言

题目描述

若一个数(首位不为0)从左到右读与从右到左读都是一样,这个数就叫做回文数,例如12521就是一个回文数。
给定一个正整数,把它的每一个位上的数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止。给定的数本身不为回文数。
例如:87则有:
STEP1: 87+78=165
STEP2: 165+561=726
STEP3: 726+627=1353
STEP4: 1353+3531=4884
编写一个程序,输入M(12<=M<=100),输出最少经过几步可以得到回文数。如果在8步以内(含8步)不可能得到回文数,则输出0。

输入

第1行一个正整数L,代表测试数据的组数。
接下来L行每行一个整数M(12<=M<=100),M本身不为回文数;

输出

输出L行,第i行对应输入数据的第i+1行,输出最少需要的步数;如果步数大于8,则输出0。

样例输入

3
12
87
89

样例输出

1
4
0
代码

#include<stdio.h>
#include<string.h>
int reverse(int x)
{
int num=0;
while(x)
{
num=x%10+num*10;
x/=10;
}
return num;
}
int judge(int x)
{
if(x-reverse(x)==0)
return 1;
else
return 0;
}
int main()
{
int l,m,cnt=0;
scanf("%d",&l);
while(l--)
{
cnt=0;
scanf("%d",&m);
while(cnt<=8)
{
if(!judge(m))
{
m=m+reverse(m);
cnt++;
}
else
{
printf("%d\n",cnt);
break;
}

}
if(cnt>8)
{
printf("0\n");
}
}
return 0;
}

 
时间: 2024-12-20 15:49:17

回文数C语言的相关文章

42.回文数——C语言初学者百题大战之二十一

#include<stdio.h> int main() { int a,b,c,d,e,n; scanf("%d",&n); a=n/10000; b=n%10000/1000; c=n%10000%1000/100; d=n%10000%1000%100/10; e=n%10000%1000%100%10; if(a==e&&b==d) printf("Yes\n"); else printf("No\n"

C语言找出大于一个数的最小回文数的代码

下面代码内容是关于C语言找出大于一个数的最小回文数的代码,希望能对码农们有用途. #include <stdio.h>#include <stdlib.h>#include <string.h> void main(){char data[10] = {0}, res[10] = {0}, state[10] = {0}, len = 0, pos, bit = 0;scanf("%s",data); len = strlen(data); pos

C语言判断回文数

1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 //1.得到这个数字 2.翻转 3.进行比较 4.如果相同 就输出 是 否则 输出不是 6 7 int resource, result, re_tmp; //resource存放用户输入的数值 result存放翻转后的数值 re_tmp 存放用户输入的数值 在翻转的时候会用到 8 result = 0; //对result的初始化 9 printf("

C语言之回文数算法

"回文"是指正读反读都能读通的句子.它是古今中外都有的一种修辞方式和文字游戏,如"我为人人,人人为我"等.在数学中也有这样一类数字有这种特征,成为回文数(palindrome number). 设n是一随意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数.比如,若n=1234321,则称n为一回文数.但若n=1234567,则n不是回文数. 上代码: #include <stdio.h> #define true 1 #defin

c语言基础-回文数复习

# include<stdio.h> int main(void) { int sum = 0, val, m; printf("请输入一个随机整数:"); scanf("%d",&val); m=val; while (m){ sum= sum*10 + m%10;//(理解举例:m==123,sum==3*10^2 + 2*10^1 +3*10^0) m/= 10; } if (sum == val){ printf("%d是回文数

(C语言)回文数的判断

问题描述: 判断一个数是否为回文数: 121: 12321: 1234321: 程序分析: 1. 回文数(palindromic number):是指一个数的最高位和最低位上的数相等,第二高位与次低位上的数相等,也就是关于中间"对称".如上面的三个数情况是一个回文数. 2.将这个数扩展成一个数组,将这个数的各个位上的数取出来并且一一赋给这个数组. 3.判断这个数组中的元素之间的关系是否符合回文数的特征.并且将结果输出.这个程序写了一个函数来实现这一功能. 代码如下: #include&

C语言-数组指针判断回文数

int num[5]={1,9,3,2,1}; int *p=num; int *q=&num[4]; int flag=1; for (; p<q; p++,q--) { if (*p!=*q) { flag=0; break; } } if (flag) { printf("回文数!\n"); }else{ printf("不是回文数"); } 版权声明:本文为博主原创文章,未经博主允许不得转载.

C语言-郝斌笔记-004判断是否为回文数

判断是否为回文数 1 # include <stdio.h> 2 3 int main(void) 4 { 5 int val; //存放待判断的数字 6 int m; 7 int sum = 0; 8 9 printf("请输入您需要判断的数字: "); 10 scanf("%d", &val); 11 12 m = val; 13 while (m) 14 { 15 sum = sum * 10 + m%10; 16 m /= 10; 17

【C语言】回文数与回文字符串的判断。

任意输入一个数,判断是否为回文数. 方法:将高低位互换之后如果仍然相等,则为回文数. #include <stdio.h> int huiwen(unsigned int value) { unsigned int n = value; unsigned int t = 0; while(n) { t = t*10 + n%10; n = n/10; } return (t == value); } int main () { int a,tmp; printf("please en