栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

程序分析:此题要求判断一个五位数是不是回文数,首先要理解回文数的定义,然后我们就要思考如何处理我们输入的五位数。

方法一:最简单的思路,根据回文数的定义,我们就把这个五位数分解,求出它的万位,千位,百位,十位,个位。然后我们只需要比较,看分解出的万位与个位,千位与十位是否相等,若相等则为回文数。代码如下:

#include 

int main()
{
    long a, b, c, d, x;
    printf("请输入 5 位数字:");
    scanf("%ld", &x);
    a = x / 10000;        //分解出万位
    b = x % 10000 / 1000;  //分解出千位
    c = x % 100 / 10;       //分解出十位
    d = x % 10;            //分解出个位
	//判断个位等于万位并且十位等于千位
    if (a == d && b == c) { 
        printf("这是回文数n");
    }
    else {
        printf("这不是回文数n");
    }
}

程序运行结果如下:12321是回文数,12345不是回文数。


方法二:第二种思路就是我们利用字符串,将这5位数作为字符串输入到一个字符数组中,利用数组下标找到各个数字进行比较,判断是否为回文数字。代码如下:

#include 
#include

int main()
{
    char str[5];
    printf("请输入五位数:");
    scanf("%s", str);

    if (str[0] == str[4] && str[1] == str[3])
        printf("这是一个回文数。n");
    else
        printf("这不是回文数。n");
    return 0;
}

程序运行,同样可以得到方法一的结果。

方法三:提供最后一种思路,就是将这一串数逆序排列,将得到的逆序排列数与原数进行比较,判断是否为回文数字。代码如下:

#include 

int main()
{
    int x;
    int sum = 0;
    printf("请输入一个整数:n");
    scanf("%d", &x);

    for (int i = x; i > 0; i /= 10)
        //sum最终为逆序后各个位相加的结果
        sum = sum * 10 + i % 10;
    //若该数是回文数字,说明该数逆序后还是这个数本身
    // 所以这里直接判断sum与原数是否相等
    if (sum == x)
        printf("%d 是回文数n", x);
    else
        printf("%d 不是回文数n", x);
}

同样运行程序,我们可以得到想要的结果,但这个思路不好想,主要是前面两个方法,是最清晰,最应该想到的思路。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767673.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号