C语言求出1到1000之间的自守数
时间: 2024-09-19 07:11:39 浏览: 59
自守数,又称阿姆斯壮数,是指将一个整数的各个位上的数字取出来,然后按照某个顺序排列成新的数,如果新数等于原数,则称这个数为自守数。例如,6174 == 7*6 + 1*4。
在C语言中,可以编写一个程序来找出1到1000范围内的自守数。下面是一个简单的示例:
```c
#include <stdio.h>
// 自守数函数
int is_armstrong_number(int num) {
int digits[10], sum = 0, original_num, length;
// 计算数字的位数
length = 0;
while (num > 0) {
digits[length] = num % 10;
num /= 10;
length++;
}
// 按照位次计算和
original_num = num;
for (int i = 0; i < length; i++) {
sum += pow(digits[i], length);
}
// 检查是否为自守数
if (sum == original_num)
return 1; // 是自守数
else
return 0; // 否则不是
}
int main() {
for (int i = 1; i <= 1000; i++) {
if (is_armstrong_number(i)) {
printf("%d 是1到1000之间的自守数\n", i);
}
}
return 0;
}
```
在这个程序里,`is_armstrong_number` 函数会检查给定的数字 `num` 是否为自守数。主函数会遍历1到1000的每个数,并通过该函数判断它们是否符合条件。
阅读全文