请按下列要求编写程序:(文件名取名112.c) 有一个四位整数,它的9倍恰好是其反序数(反序数例:1234与4321互为反序数)。 【要求】 1)编写函数首部为int find(int n)的子函数,其功能是判断整数n的9倍是否为n的反序数,若是则函数返回这个反序数,否则返回0(用if语句)。 2)编写主函数,穷举(用循环)所有的四位数并调用函数find,找出满足上述条件的四位数,将找到的数及其反序数输出。 程序运行结果:1089--> 9801
时间: 2024-02-06 22:09:26 浏览: 27
以下是程序的代码实现:
```
#include <stdio.h>
int find(int n) {
int reverse = 0;
int temp = n;
while (temp != 0) {
reverse = reverse * 10 + temp % 10;
temp /= 10;
}
if (n * 9 == reverse) {
return reverse;
} else {
return 0;
}
}
int main() {
int i;
for (i = 1000; i < 10000; i++) {
int reverse = find(i);
if (reverse != 0) {
printf("%d --> %d\n", i, reverse);
}
}
return 0;
}
```
解释一下程序的实现过程:
首先定义了一个 `find` 函数,该函数接受一个整数参数 `n`,并返回 `n` 的反序数(如果 `n` 的 9 倍恰好是其反序数),否则返回 0。该函数的实现方法为:使用一个 `while` 循环,不断取出 `n` 的个位数并乘以 10 加到结果 `reverse` 中,同时将 `n` 除以 10,直到 `n` 变为 0。最后判断 `n` 的 9 倍是否等于 `reverse`,如果是则返回 `reverse`,否则返回 0。
接下来是主函数的实现。主函数使用一个循环,枚举所有的四位数,对每个数调用 `find` 函数,如果返回值不为 0,则说明该四位数的 9 倍恰好是其反序数,输出该四位数和其反序数即可。