📌  相关文章
📜  C程序以显示两个间隔之间的阿姆斯壮数(1)

📅  最后修改于: 2023-12-03 15:30:15.504000             🧑  作者: Mango

C程序以显示两个间隔之间的阿姆斯壮数

阿姆斯壮数是一类特殊的自然数,它的每个数位上的数字的立方和等于该数本身,例如:

153 = 1^3 + 5^3 + 3^3

在这个程序中,我们将输入两个数字作为间隔,然后显示这两个数字之间所有的阿姆斯壮数。

实现步骤
  1. 首先,我们需要一个函数 isArmstrong(),来检查一个数是否为阿姆斯壮数。该函数接受一个参数 n,表示需要检查的数,返回一个布尔值,表示该数是否为阿姆斯壮数。
int isArmstrong(int n) {
    int temp = n, sum = 0;
    while (temp > 0) {
        int digit = temp % 10;
        sum += digit * digit * digit;
        temp /= 10;
    }
    return (sum == n);
}
  1. 接下来,我们需要在 main() 函数中调用该函数,来查找指定范围内的所有阿姆斯壮数。首先,我们需要输入两个整数 startend 作为范围。
int main() {
    int start, end;
    printf("Enter start and end numbers: ");
    scanf("%d %d", &start, &end);
  1. 然后,我们需要遍历指定范围内的所有数字,并调用 isArmstrong() 函数来判断它们是否为阿姆斯壮数。如果是,就打印出来。
    printf("Armstrong numbers between %d and %d are: ", start, end);
    for (int i = start; i <= end; i++) {
        if (isArmstrong(i)) {
            printf("%d ", i);
        }
    }
    printf("\n");
  1. 最后,我们在程序结束时返回 0。
    return 0;
}
完整代码
#include <stdio.h>

int isArmstrong(int n) {
    int temp = n, sum = 0;
    while (temp > 0) {
        int digit = temp % 10;
        sum += digit * digit * digit;
        temp /= 10;
    }
    return (sum == n);
}

int main() {
    int start, end;
    printf("Enter start and end numbers: ");
    scanf("%d %d", &start, &end);

    printf("Armstrong numbers between %d and %d are: ", start, end);
    for (int i = start; i <= end; i++) {
        if (isArmstrong(i)) {
            printf("%d ", i);
        }
    }
    printf("\n");

    return 0;
}
示例输出
Enter start and end numbers: 1 1000
Armstrong numbers between 1 and 1000 are: 1 153 370 371 407