C++实现输入一个正整数n(100<n<10000),输出100-n之间的所有的回文数

【问题】:用C++语言编写一个函数palindromeNumber,求[100,n]范围内的回文数有哪些,在主函数中调用该函数。输出区间[100,n]中所有的回文数,一行一个回文数,不需要输出其它无关的字符。

【回文数】:是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

代码方式一(推荐,简洁,易理解)】:

#include <iostream>
using namespace std;
int main() {
    int n = 200;

    // 判断输入n是否是100-10000之间的数
    if (n > 100 && n < 10000) {
        void palindromeNumber(int n);
        // 1--n是100~10000之间的数-->此处去计算回文数
        for (int k = 100; k <= n; k++) {

            /**  计算回文数的函数
            * 可以将数字num 重复num%10分离出个位数x,组成新的数m*10+x再执行num/10,直到num等于0为止。
            * 看看组成新的数是不是跟数字n相等。
            */
            int m = 0;
            int num = k;
            for (; num > 0;) {
                m = m*10 + num%10;     // 将数字num 重复n%10分离出个位数x,组成新的数m*10+x
                num = num / 10;          // 再执行num/10
            }

            if (m == k) {          // 看看组成新的数是不是跟原数字相等
                printf("%d\n", k); // 输出回文数
            }
        }
    } else {
        cout << "当前输入的数字不在100——10000范围内." << endl;
    }

	return 0;
}

【代码方式二】:

#include <iostream>
using namespace std;
int main() {

    // 回文数计算结果
    int hws = 0;

    int n = 200;

    // 判断输入n是否是100-10000之间的数
    if (n > 100 && n < 10000) {
        void palindromeNumber(int n);
        // 1--n是100~10000之间的数-->此处去计算回文数
        for (int k = 100; k <= n; k++) {

            // 引用计算回文数的函数
            palindromeNumber(k);
        }
    } else {
        cout << "当前输入的数字不在100——10000范围内." << endl;
    }

	return hws;
}


/**  计算回文数的函数
* 可以将数字n 重复n%10分离出个位数x,组成新的数m*10+x再执行n/10,直到n等于0为止。
* 看看组成新的数是不是跟数字n相等。
*/
void palindromeNumber(int num) {
    int n,m;
    m = 0;
    n = num;
    for (; n > 0;) {
        m = m*10 + n%10;     // 将数字n 重复n%10分离出个位数x,组成新的数m*10+x
        n = n / 10;          // 再执行n/10
    }

    if (m == num) {          // 看看组成新的数是不是跟数字n相等
        printf("%d\n", num); // 输出回文数
    }
	
}

【代码方式三】:

#include <iostream>
using namespace std;
int main() {

    // 回文数计算结果
    int hws = 0;

    int n = 200;

    // 判断输入n是否是100-10000之间的数
    if (n > 100 && n < 10000) {
        void palindromeNumber(int n);
        // 1--n是100~10000之间的数-->此处去计算回文数
        for (int k = 100; k <= n; k++) {

            // 引用计算回文数的函数
            palindromeNumber(k);
        }
    } else {
        cout << "当前输入的数字不在100——10000范围内." << endl;
    }

	return hws;
}


// 计算回文数的函数
void palindromeNumber(int n) {
    int b, c, d, e, f;  int i, m;
    if (n < 1000) {
        b = (n / 100) % 10; //求各位的数
        c = (n / 10) % 10;
        d = n % 10;
        if (n == ((d * 100) + (c * 10) + b)) { //判断是不是回文数的条件
            i = n;
            printf("%d\n", i); // 输出计算结果
        }
    } else {
        b = (n / 1000) % 10;
        c = (n / 100) % 10;
        d = (n / 10) % 10;
        e = n % 10;
        if (n == ((e * 1000) + (d * 100) + (c * 10) + b)) {
            m = n;
            printf("%d\n", m); // 输出计算结果
        }
    }
	
}

【效果图】

输入数字范围错误:

输入数字范围正常:

参考:

判断一个数是否为回文数(三种方法,详细注解)_判断一个整数是否是回文数-CSDN博客

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuckyJiang.2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值