定义喜剧 发表于 2020-12-29 15:24:01

打印100到1000所有水仙花数

#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;

}




liangqing77 发表于 2020-12-29 15:40:44

66666666

定义喜剧 发表于 2020-12-29 16:12:22

liangqing77 发表于 2020-12-29 15:40
66666666

大佬们 帮我看看 我这个代码为啥不对啊

肚子饿了233 发表于 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;


小古比鱼 发表于 2020-12-29 18:37:32

推荐视频:https://www.bilibili.com/video/BV18J411k7w2

马邦浩 发表于 2020-12-29 19:05:58

sum没有清零,在第二次循环是sum还是上一次的值,必须每次归零

风过无痕1989 发表于 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);
                }
        }
}

风过无痕1989 发表于 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]
查看完整版本: 打印100到1000所有水仙花数