鱼C论坛

 找回密码
 立即注册
查看: 1228|回复: 7

[已解决]打印100到1000所有水仙花数

[复制链接]
发表于 2020-12-29 15:24:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include  <stdio.h>
#include  <stdlib.h>

main()
{
        int i,sum=0,temp=0;
        for (i = 100; i < 1000; i++)
        {
                 int init = i;
                 while (i!=0)
                 {
                         temp = i % 10;
                         sum += temp * temp * temp;
                         i = i / 10;
                }
                 if (init ==sum)
                 {
                         printf("%d\n", init);
                 }
               
        }
        system("pause");
        return 0;

}




最佳答案
2020-12-29 22:24:45
本帖最后由 风过无痕1989 于 2020-12-30 01:04 编辑

这个程序才是你的程序的初衷吧:
#include  <stdio.h>
#include  <stdlib.h>

main()
{
        int i, sum = 0, temp = 0;
        for (i = 100; i < 1000; i++)
        {
                int init = i;            // 不能用循环变量去运算,换用 init 去运算
                while (init != 0)
                {
                        temp = init % 10;
                        sum += temp * temp * temp;
                        init = init / 10;
                }
                if (i == sum)           // 根据水仙花数的定义,其立方和等于该数
                {
                        printf("%d\n", i);
                }
                sum = 0;               // 一个数求完后,其立方和应初始化,为下一个数作准备
        }
        system("pause");
        return 0;

}

153
370
371
407
请按任意键继续 。 。 。


评分

参与人数 1鱼币 -2 收起 理由
心驰神往 -2 问题没解决?

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-29 15:40:44 | 显示全部楼层
66666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-29 16:12:22 | 显示全部楼层

大佬们 帮我看看 我这个代码为啥不对啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-29 18:23:14 | 显示全部楼层
定义喜剧 发表于 2020-12-29 16:12
大佬们 帮我看看 我这个代码为啥不对啊

temp = i % 10;   //temp为个位数
sum += temp * temp * temp;   //  ??什么鬼?
i = i / 10;    //  i为十位数
这几行错了。
改正为:
int n,m,k;
n=i%10;  //n为个位数
m=i/100;  //m为百位数
k=(i-m*100)/10  //k为十位数
sum+=n*n*n+m*m*m+k*k*k;


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-29 18:37:32 | 显示全部楼层
推荐视频:https://www.bilibili.com/video/BV18J411k7w2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-29 19:05:58 | 显示全部楼层
sum没有清零,在第二次循环是sum还是上一次的值,必须每次归零
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-29 22:20:10 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-30 00:47 编辑
#include<stdio.h>
int main()
{
    int m,bai,shi,ge;
        for (m = 100;m < 1000;m++)
        {
                bai = m / 100;
                shi = (m - bai * 100) / 10;
                ge = m % 10;
                if(m == bai * bai * bai + shi * shi * shi + ge * ge * ge)
                {
                    printf("%d\n",m); 
                } 
        } 
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-29 22:24:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-12-30 01:04 编辑

这个程序才是你的程序的初衷吧:
#include  <stdio.h>
#include  <stdlib.h>

main()
{
        int i, sum = 0, temp = 0;
        for (i = 100; i < 1000; i++)
        {
                int init = i;            // 不能用循环变量去运算,换用 init 去运算
                while (init != 0)
                {
                        temp = init % 10;
                        sum += temp * temp * temp;
                        init = init / 10;
                }
                if (i == sum)           // 根据水仙花数的定义,其立方和等于该数
                {
                        printf("%d\n", i);
                }
                sum = 0;               // 一个数求完后,其立方和应初始化,为下一个数作准备
        }
        system("pause");
        return 0;

}

153
370
371
407
请按任意键继续 。 。 。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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