×

C语言 C语言学习随笔 初始C语言 C语言实例小程序

C语言学习随笔:求出0~999之间的所有“水仙花数”并输出

一哥 一哥 发表于2022-11-06 21:51:26 浏览2719 评论0

抢沙发发表评论

程序要求:

1、求数字0-999之间的所有水仙花数,并在屏幕输出


解析思路:

1、“水仙花数”:指一个N(N≥3)位的数字,其各位的数字N(位数)次方之和刚好等于数字本身。(如:153 = 1^3 + 5^3 + 3^3)

2、程序要求数字为0-999,“水仙花数”至少3位。因此先进行一个判断,满足要求才开始进行计算。

if (i > 99)  //当数字满足位数要求才开始计算

3、将数字的每一位数分离出来,给到3个变量

a = i / 100;  //分离出百位数
b = (i / 10) % 10;  //分离出十位数
c = i % 10;  //分离出个位数

4、计算各位数字之立方和,并判断是否与数字相等

方法一:在主函数直接计算并判断
//主函数内
if (i = a * a * a + b * b * b + c * c * c)
{
    printf("%d ", i);
}

方法二:创建一个立方计算函数fun_3来计算每位立方值,并在主函数内进行判断
//立方计算函数
int fun_3(int m)
{
    int cube = m * m * m;  //计算传入数的立方值
    return cube;  //返回计算的值
}
//主函数内
if (i = fun_3(a) + fun_3(b) + fun_3(c))
{
    printf("%d ", i);
}

方法三:使用立方计算库函数pow(需调用头文件math.h)
//主函数内
if (i == pow(a, 3) + pow(b, 3) + pow(c, 3))
{
    printf("%d ", i);
}


完整代码:

/* 方法一 */
//头文件
#include <stdio.h>

//主函数
int main()
{
    int i = 0;
    int a = 0, b = 0, c = 0;
    for (i = 0; i < 1000; i++)
    {
        if (i > 99)
        {
            a = i / 100;  //百位
            b = (i / 10) % 10;  //十位
            c = i % 10;  //个位
            if (a * a * a + b * b * b + c * c * c == i)
            {
                printf("%d ", i);
            }
        }
    }
}


/* 方法二 */
//头文件
#include <stdio.h>

//立方计算函数
int fun_3(int m)
{
    int cube = m * m * m;  //计算立方值
    return cube;  //返回计算的值
}
//主函数
int main()
{
    int i = 0;
    int a = 0, b = 0, c = 0;
    for (i = 0; i < 1000; i++)
    {
        if (i > 99)
        {
            a = i / 100;  //百位
            b = (i / 10) % 10;  //十位
            c = i % 10;  //个位
            if (fun_3(a) + fun_3(b) + fun_3(c) == i)
            {
                printf("%d ", i);
            }
        }
    }
}


/* 方法三 */
//头文件
#include <stdio.h>
#include <math.h>

//主函数
int main()
{
    int i = 0;
    int a = 0, b = 0, c = 0;
    for (i = 0; i < 1000; i++)
    {
        if (i > 99)
        {
            a = i / 100;  //百位
            b = (i / 10) % 10;  //十位
            c = i % 10;  //个位
            if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i)
            {
                printf("%d ", i);
            }
        }
    }
}


少长咸集

群贤毕至

访客