判断一个数字是否是回文数||取整与取余

简介: 判断一个数字是否是回文数||取整与取余

image.png

示例1:
输入:123
输出:false
示例2:
输入:121
输出:ture
示例3:
输入:-121
输出:false

思路:

首先,很显然,若x是负数,那么就一定不是回文数。

若x是正数,那我们进一步判断。

以12345677654321为例,我们会判断最高位和最低位的数字是否相等,即1和1是否相等。最高位的1我们用x除以10000000000000(即10*(x的位数-1))(10的14次),最低位的1我们直接取余就好了。

下一步,我们判断第二高位和第二低位的数字是否相等,即2和2是否相等。这时,第二低位怎么表示呢?当第一次判断完毕之后,给x重新赋值,使x=x/10,那这时,x=1234567765432,这时再对x重新取余就可以表示低位的2了。高位的2,同样,取整,使得x除以1000000000000(即10*(x的位数-2))(10的13次),得到12,再取余可得到2。

那我们需要判断几次呢?这与x是几位数有关。若x是四位数,那么需要两次;若x是五位数,需要两次。若x是七位数,需要三次,x是八位数,需要四次…

所以对于输入的x,我们需要判断x是几位数。下面我是用的函数。

进行完上述步骤,如何判断输入的x是否为回文数呢?

首先想到的就是在循环内部,若判断出来相应位数的两个数字不相等,那就输出“false”。因此,如果不是回文数,是很好处理的。

那对于回文数,我们可以设置一个标志量flag,初始化为1,若判断出不是回文数,则改变flag=0。

进行完循环之后,我们进一步判断flag的值,若flag还是为1,那么就是回文数了。

代码实现:

#include <stdio.h>
#include <math.h>
int fun(int x);
int main (void)
{
    int x,n,i,count;
    int flag=1;
    scanf("%d",&x);
    if (x<0)
    printf("false");
    count=fun(x);n=count; //counnt为x的位数,但后面要用到,但又不想要被修改,于是将此赋值给n
    for (i=1;i<=count/2;i++)
    {
        if ((int)(x/pow(10,n-i))%10 != x%10) //这里要注意%号的两边都必须是整数
        {
            flag=0;
            printf("false");
            break;
        } 
        x=x/10;  
    }
    if (flag==1)
    printf("ture");
    return 0;
}
//函数fun用来判断一个数是几位数
int fun(int x)
{
    int i=0;
    while(x>0)
    {
        i++;
        x=x/10;
    }
    return i;   
}


相关文章
|
3月前
判断一个素数能被几个9整除
判断一个素数能被几个9整除。
33 1
|
8月前
|
算法
P1226 【模板】快速幂||取余运算
P1226 【模板】快速幂||取余运算
30 0
|
4月前
分解质因数答疑 为什么只需要枚举到根号N 为什么n % i == 0就是质数
分解质因数答疑 为什么只需要枚举到根号N 为什么n % i == 0就是质数
31 0
|
4月前
|
Java
如何判断科学计数法3.14E+308 在区间3.14E+38和 3.14E+1308内
对于非常大的科学计数法表示的数值,直接将其转换为 `double` 类型可能会导致溢出。Java 中的 `double` 类型表示的最大值约为 `1.7976931348623157E+308`,因此 `3.14E+308` 已经超出了其表示范围。如果需要处理超出 `double` 类型表示范围的数值,可以使用 `BigDecimal` 类来处理。 以下是一个示例,展示如何使用 `BigDecimal` 类来比较科学计数法表示的数值是否在指定区间内: ```java import java.math.BigDecimal; public class ScientificNotationC
|
10月前
位运算判断奇数or偶数
位运算判断奇数or偶数
|
5月前
|
C语言
判断回文数
C 语言实例 - 判断回文数。
25 1
|
10月前
1195:判断整除
1195:判断整除
125 0
|
11月前
|
算法 Python
回文数的判断
回文数的判断
76 0
09:判断能否被3,5,7整除
09:判断能否被3,5,7整除
298 0
【模板】快速幂||取余运算
【模板】快速幂||取余运算
68 0