C语言9:求区间[200,2000]中所有回文数的和,回文数是正读与反读都一样的数

在程序编辑区编写程序,给定程序功能是:
求区间[200,2000]中所有回文数的和,回文数是正读与反读都一样的数,如525和
1551。
程序有两个空(1)、(2)需要补充完整。并将程序调试出所需的结果。

注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构

 

定义了一个名为hws()的函数来检测给定数字是否为回文数。该函数使用while循环和取模来将数字从低位到高位取出,将它们反转并与原始数字进行比较以检查回文性质。

在main()函数中,我们通过循环从200到2000迭代所有数字,并对每个数字调用hws()函数进行检查。如果数字是回文数,则将其添加到总和中。最后输出总和即可。

#include <stdio.h>

int hws(long n) {
    long x = n, t = 0, k;
    while (x > 0) {
        k = x % 10;
        t = t * 10 + k;
        x = x / 10;
    }
    if (t == n) {
        return 1;
    } else {
        return 0;
    }
}

int main() {
    long k, s = 0;
    for (k = 200; k <= 2000; k++) {
        if (hws(k)) {
            s += k;
        }
    }
    printf("%ld\n", s);
    return 0;
}

 

拓展

#include <stdio.h>

// 判断一个数字是否为回文数
int is_palindrome(int num) {
    int origin = num;
    int reversed = 0;
    while (num > 0) {
        reversed = reversed * 10 + num % 10;
        num /= 10;
    }
    return reversed == origin;
}

int main() {
    int sum = 0;
    for (int num = 200; num <= 2000; num++) {
        if (is_palindrome(num)) {
            sum += num;
        }
    }
    printf("区间[200, 2000]中所有回文数的和为:%d\n", sum);
    return 0;
}

 

参数可以使用long或int,但两者之间有重要的区别。

int是整数类型,通常占用4个字节(32位),范围从-2,147,483,648到+2,147,483,647(即-2³¹到2³¹-1)。因此,使用int对于小于2,147,483,647的数字是合适的,但如果数字超过了这个范围,则会出现溢出错误。

而long也是整数类型,通常占用8个字节(64位),范围从-9,223,372,036,854,775,808到+9,223,372,036,854,775,807(即-2⁶³到2⁶³-1)。因此,long类型的参数可以在计算较大数字时提供更广泛的范围,并且在大多数情况下不会导致溢出错误。

在上述程序中,由于我们需要在区间[200, 2000]内迭代整数,因此可以使用int类型作为循环变量。但是对于检查回文数时,必须使用long类型,因为某些可能是回文的数字可能超出int类型的范围。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值