c语言编程笔录

首页 >   > 笔记大全

笔记大全

c语言怎么解水仙花数

更新时间:2023-10-23

前言

水仙花数,也被称为阿姆斯特朗数,是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。

解决方案

我们可以使用C语言编写一个程序来找出指定范围内的水仙花数。

#include 
#include 

int isArmstrong(int num) {
    int originalNum, remainder, result = 0, n = 0;

    originalNum = num;

    // 计算位数
    while (originalNum != 0) {
        originalNum /= 10;
        ++n;
    }

    originalNum = num;

    // 计算每位数字的n次幂之和
    while (originalNum != 0) {
        remainder = originalNum % 10;
        result += pow(remainder, n);
        originalNum /= 10;
    }

    // 判断是否为水仙花数
    if (result == num) {
        return 1; // 是水仙花数
    } else {
        return 0; // 不是水仙花数
    }
}

int main() {
    int startNum, endNum;

    printf("请输入起始数: ");
    scanf("%d", &startNum);

    printf("请输入结束数: ");
    scanf("%d", &endNum);

    printf("在指定范围内的水仙花数有:\n");

    // 遍历指定范围内的数字并判断是否为水仙花数
    for (int i = startNum; i <= endNum; ++i) {
        if (isArmstrong(i)) {
            printf("%d\n", i);
        }
    }

    return 0;
}

代码解析

上述代码使用了两个函数来解决问题,其中:

1. isArmstrong 函数用于判断给定的数是否为水仙花数。它首先计算该数的位数,然后计算每位数字的n次幂之和,并与原始数进行比较。

2. main 函数用于获取用户输入的起始数和结束数,并遍历指定范围内的数字,判断每个数字是否为水仙花数,如果是,就打印出来。

总结

通过编写上述的代码,我们可以找出指定范围内的水仙花数。这是一个简单且经典的问题,可以帮助我们巩固理解循环和条件语句。同时,这个解决方案还可以作为学习和理解函数的一个示例。