检查阿姆斯特朗数的 C 程序
要理解此示例,您应该具备以下 C 语言编程主题的知识:
如果一个 n 位正整数等于其各位数字的 n 次方之和,则称该数为阿姆斯特朗数。
如果是 3 位数的阿姆斯特朗数,则每位数的立方的和等于该数本身。例如 153 是一个阿姆斯特朗数。因为: 153 = 1*1*1 + 5*5*5 + 3*3*3
检查阿姆斯壮的三位数字
#include <stdio.h>
int main() {
int num, originalNum, remainder, result = 0;
printf("Enter a three-digit integer: ");
scanf("%d", &num);
originalNum = num;
while (originalNum != 0) {
// remainder contains the last digit
remainder = originalNum % 10;
result += remainder * remainder * remainder;
// removing last digit from the orignal number
originalNum /= 10;
}
if (result == num)
printf("%d is an Armstrong number.", num);
else
printf("%d is not an Armstrong number.", num);
return 0;
}
输出
Enter a positive integer: 371
371 is an Armstrong number.
检查阿姆斯壮 n 位数
#include <math.h>
#include <stdio.h>
int main() {
int num, originalNum, remainder, n = 0;
float result = 0.0;
printf("Enter an integer: ");
scanf("%d", &num);
originalNum = num;
// store the number of digits of num in n
for (originalNum = num; originalNum != 0; ++n) {
originalNum /= 10;
}
for (originalNum = num; originalNum != 0; originalNum /= 10) {
remainder = originalNum % 10;
// store the sum of the power of individual digits in result
result += pow(remainder, n);
}
// if num is equal to result, the number is an Armstrong number
if ((int)result == num)
printf("%d is an Armstrong number.", num);
else
printf("%d is not an Armstrong number.", num);
return 0;
}
输出
Enter an integer: 1634
1634 is an Armstrong number.
在这个程序中,首先计算一个整数的位数并存储在变量 n
中. 然后,使用 pow()
函数计算第二个 for
循环的每次迭代中各个数字的幂。