请提供一个C语言程序,能计算n位的自守数
时间: 2024-11-18 21:17:19 浏览: 9
自守数是一个数字,除自身外的所有因数之和等于它自身的正因子。例如,6是一个自守数,因为除了6以外,1+2+3=6。
下面是一个简单的C语言程序,用于检查给定的整数是否为n位自守数:
```c
#include <stdio.h>
// 函数声明,检查是否为自守数
int is_armstrong_number(int num, int n);
int main() {
int n, num;
printf("请输入一个n位数: ");
scanf("%d", &n);
// 检查用户输入的有效性
if (n <= 0) {
printf("错误:请输入一个正整数位数。\n");
return 1;
}
printf("请输入一个%d位数: ", n);
scanf("%d", &num);
// 检查输入的数值是否有效,且计算其自守性
if (is_armstrong_number(num, n)) {
printf("%d 是一个%d位的自守数.\n", num, n);
} else {
printf("%d 不是一个%d位的自守数.\n", num, n);
}
return 0;
}
// 自守数检查函数
int is_armstrong_number(int num, int n) {
int sum = 0, temp = num, digit;
while (temp != 0) {
digit = temp % 10;
sum += digit; // 累加每一位数字
temp /= 10;
}
return (sum == num); // 如果累加结果等于原数,则返回true
}
```
这个程序首先让用户输入一个数字和它的位数,然后通过`is_armstrong_number`函数检查该数字是否满足自守数条件。
阅读全文