简介
在本实验中,我们将学习 Armstrong 数(阿姆斯壮数),并使用 C 语言编写一个程序来验证一个数是否为 Armstrong 数。Armstrong 数是指一个数等于其各位数字的幂次和,其中幂次为该数的位数。
例如:
153 是一个 Armstrong 数,因为 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27。
371 是一个 Armstrong 数,因为 371 = 3^3 + 7^3 + 1^3 = 27 + 343 + 1。
在本实验中,我们将学习 Armstrong 数(阿姆斯壮数),并使用 C 语言编写一个程序来验证一个数是否为 Armstrong 数。Armstrong 数是指一个数等于其各位数字的幂次和,其中幂次为该数的位数。
例如:
153 是一个 Armstrong 数,因为 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27。
371 是一个 Armstrong 数,因为 371 = 3^3 + 7^3 + 1^3 = 27 + 343 + 1。
首先,我们需要在 ~/project/
目录下创建一个新的 C 文件,将其命名为 main.c
。
touch ~/project/main.c
让我们编写一个 C 程序来查找 1 到 500 之间的 Armstrong 数。
#include <stdio.h>
#include <math.h>
int main() {
printf("\nArmstrong numbers between 1 to 500 are: \n");
for (int i = 1; i <= 500; i++) {
int t = i, sum = 0;
while (t != 0) {
int digit = t % 10;
sum += pow(digit, 3);
t /= 10;
}
if (sum == i) {
printf("%d ", i);
}
}
return 0;
}
现在让我们编写一个 C 程序来检查一个数是否为 Armstrong 数。
#include <stdio.h>
#include <math.h>
int main() {
int n, sum = 0;
printf("Enter a number: ");
scanf("%d", &n);
int temp = n;
while (temp != 0) {
int digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
if (sum == n) {
printf("%d is an Armstrong number.\n", n);
} else {
printf("%d is not an Armstrong number.\n", n);
}
return 0;
}
让我们将两个程序整合到 main.c
文件中。
#include <stdio.h>
#include <math.h>
int main() {
// Armstrong numbers between 1 to 500
printf("Armstrong numbers between 1 to 500 are: \n");
for (int i = 1; i <= 500; i++) {
int t = i, sum = 0;
while (t != 0) {
int digit = t % 10;
sum += pow(digit, 3);
t /= 10;
}
if (sum == i) {
printf("%d ", i);
}
}
printf("\n");
// Checking if a number is Armstrong number
int n, sum = 0;
printf("Enter a number: ");
scanf("%d", &n);
int temp = n;
while (temp != 0) {
int digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
if (sum == n) {
printf("%d is an Armstrong number.\n", n);
} else {
printf("%d is not an Armstrong number.\n", n);
}
return 0;
}
在本实验中,我们学习了 Armstrong 数(阿姆斯壮数),并掌握了如何在给定范围内查找 Armstrong 数,以及如何检查一个数是否为 Armstrong 数。希望你享受这个实验,并通过它加深对 C 语言编程的理解。