在此示例中,您将学习检查用户输入的整数是否是Armstrong数字。
要理解此示例,您应该了解以下C语言编程主题:
如果满足以下条件,则一个正整数称为阿姆斯特朗数(n阶),如果
abcd... = an + bn + cn + dn +
对于3位的阿姆斯特朗数,每个数字的立方数之和等于数字本身。 例如,153是Armstrong的数字,因为
153 = 1*1*1 + 5*5*5 + 3*3*3
#include <stdio.h> int main() { int num, originalNum, remainder, result = 0; printf("输入一个三位数的整数: "); scanf("%d", &num); originalNum = num; while (originalNum != 0) { // 余数 remainder = originalNum % 10; result += remainder * remainder * remainder; //从原始数字中去除最后一位数 originalNum /= 10; } if (result == num) printf("%d 是一个阿姆斯特朗数。", num); else printf("%d 不是一个阿姆斯特朗数。", num); return 0; }
输出结果
输入一个三位数的整数: 371 371 是一个阿姆斯特朗数。
#include <math.h> #include <stdio.h> int main() { int num, originalNum, remainder, n = 0; float result = 0.0; printf("输入一个整数: "); scanf("%d", &num); originalNum = num; //将num的位数存储在n中 for (originalNum = num; originalNum != 0; ++n) { originalNum /= 10; } for (originalNum = num; originalNum != 0; originalNum /= 10) { remainder = originalNum % 10; // 存储结果中每个数字的幂的和 result += pow(remainder, n); } // 如果num等于result,则该数字为阿姆斯壮数字 if ((int)result == num) printf("%d 是一个阿姆斯特朗数。", num); else printf("%d 不是一个阿姆斯特朗数。", num); return 0; }
输出结果
输入一个整数: 1634 1634 是一个阿姆斯特朗数。
在此程序中,首先计算一个整数的位数,并将其存储在n中。 并且,pow()函数用于计算第二个for循环的每次迭代中各个数字的幂。