在 C 语言中查找 Armstrong 数

CCBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习 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。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("`C`")) -.-> c/ControlFlowGroup(["`Control Flow`"]) c(("`C`")) -.-> c/FunctionsGroup(["`Functions`"]) c(("`C`")) -.-> c/FileHandlingGroup(["`File Handling`"]) c(("`C`")) -.-> c/UserInteractionGroup(["`User Interaction`"]) c/ControlFlowGroup -.-> c/if_else("`If...Else`") c/ControlFlowGroup -.-> c/for_loop("`For Loop`") c/ControlFlowGroup -.-> c/while_loop("`While Loop`") c/FunctionsGroup -.-> c/math_functions("`Math Functions`") c/FileHandlingGroup -.-> c/create_files("`Create Files`") c/UserInteractionGroup -.-> c/user_input("`User Input`") subgraph Lab Skills c/if_else -.-> lab-123200{{"`在 C 语言中查找 Armstrong 数`"}} c/for_loop -.-> lab-123200{{"`在 C 语言中查找 Armstrong 数`"}} c/while_loop -.-> lab-123200{{"`在 C 语言中查找 Armstrong 数`"}} c/math_functions -.-> lab-123200{{"`在 C 语言中查找 Armstrong 数`"}} c/create_files -.-> lab-123200{{"`在 C 语言中查找 Armstrong 数`"}} c/user_input -.-> lab-123200{{"`在 C 语言中查找 Armstrong 数`"}} end

创建一个新的 C 文件

首先,我们需要在 ~/project/ 目录下创建一个新的 C 文件,将其命名为 main.c

touch ~/project/main.c

查找 1 到 500 之间的 Armstrong 数

让我们编写一个 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;
}

检查一个数是否为 Armstrong 数

现在让我们编写一个 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 语言编程的理解。

您可能感兴趣的其他 C 教程