在程序编辑区编写程序,给定程序功能是:
求区间[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类型的范围。