吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 655|回复: 5
收起左侧

[已解决] C语言求水仙花数

[复制链接]
Shimmer666 发表于 2022-6-12 20:46
本帖最后由 Shimmer666 于 2022-6-13 08:44 编辑

如果一个三位数,其各位数的立方和等于该数,则称之为水仙花数。例如13+73+33=371即为水仙花数。请你完成下面程序,判断并输出所有的水仙花数。     各位大佬,我又来了。这次是求水仙花数。在判断是否为水仙花数 老师只定义了x  这怎么判断呢?本来我是想定义多个的。第二个步骤用循环。感谢!!!!!



// 判断x是否水仙花数,是则返回1,否则返回0int N(int x);


// 在main函数中遍历所有三位数,如果是水仙花数则输出




//感谢评论区 还有谢谢大佬们的提醒   通过思考和参考我写出来了
#include <stdio.h>
#include <stdlib.h>

// 判断x是否水仙花数,是则返回1,否则返回0

int N(int x);

        if (x < 100 || x > 999) return 0;
        if (sum == x) return 1;

// 在main函数中遍历所有三位数,如果是水仙花数则输出

int main ()
{
    int a,b,c,d,sum = 0;
    for(a = 100;a<1000;a++)  //循环
    {
        b = a%10;
        c = a/10%10;
        d = a/100;
        sum = b*b*b +c*c*c +d*d*d;
        if(sum == a)
            printf("水仙花数为%3d\n",sum);
    }
    return 0;
}


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xzqsr 发表于 2022-6-12 23:46
[C] 纯文本查看 复制代码
#include <stdio.h>

int N(int x)
{
    // 限制在三位数
    if (x < 100 || x > 999) return -1;
    
    // 分离数位(例如 153)
    // 这个过程也可以用循环实现,不过这里为了看得清楚一些先不放进循环
    int digits[3];
    digits[0] = x / 100; // 百位(例如 1)
    x = x % 100;         // 余数(例如 53) 
    digits[1] = x / 10;  // 十位(例如 5)
    x = x % 10;          // 余数(例如 3) 
    digits[2] = x / 1;   // 个位(例如 3)
    
    // 验证水仙花
    // 这个过程也可以用循环实现,不过这里为了看得清楚一些先不放进循环
    int sum_left =
        digits[0] * digits[0] * digits[0] +
        digits[1] * digits[1] * digits[1] +
        digits[2] * digits[2] * digits[2];
    int sum_right =
        digits[0] * 100 +
        digits[1] * 10 +
        digits[2] * 1;
    if (sum_left == sum_right) return 1;
    return 0;
}

int main()
{
    // 遍历
    for (int i=100; i<=999; i++)
    {
        if (N(i)) printf("%d\n", i);
    }

    return 0;
}


输出结果:
[Plain Text] 纯文本查看 复制代码
153
370
371
407
HC老杨 发表于 2022-6-13 07:03
入门级小练习,你这种方式不妥,还是要自己好好思考,这样的程序你的教材或者老师的课件应该都有的,不思考只看别人的程序是学不到什么东西的,就说楼上的程序吧,用到了数组,但是水仙花数往往是在学习循环部分就出现的练习,数组应该还没有接触到,所以高手写的程序往往不一定适合你。
开心的一逼 发表于 2022-6-13 08:10
HC老杨 发表于 2022-6-13 07:03
入门级小练习,你这种方式不妥,还是要自己好好思考,这样的程序你的教材或者老师的课件应该都有的,不思考 ...

感觉这个不难.......要是这种为了答案而求助,放弃了最重要的思维锻炼,以后碰到要实现啥东西得时候寸步难行
 楼主| Shimmer666 发表于 2022-6-13 08:31
HC老杨 发表于 2022-6-13 07:03
入门级小练习,你这种方式不妥,还是要自己好好思考,这样的程序你的教材或者老师的课件应该都有的,不思考 ...

好!!谢谢提醒
xzqsr 发表于 2022-6-13 12:16
HC老杨 发表于 2022-6-13 07:03
入门级小练习,你这种方式不妥,还是要自己好好思考,这样的程序你的教材或者老师的课件应该都有的,不思考 ...

非常赞同这位坛友的点评,昨天没想太多直接写出来了,可能不适合楼主目前的学习阶段。另外也建议楼主多加思考,尽量多多研究,尝试自己想办法解决问题,哪怕是错的或实在研究不出了再来求助,那样会很深刻。也不知道我贸然抛出代码对楼主而言是帮忙还是坑害,希望楼主是真的有所收获吧。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表