注册 登录
编程论坛 C语言论坛

水仙花数

a102034 发布于 2020-02-23 14:17, 2962 次点击
#include <stdio.h>
#include <stdlib.h>

int main()
{int i,a,sum;
for(i=100;i<1000;i++)
{sum=0;
    while(a)
    {
        a=i%10;
        sum=sum+a*a*a;
        a=i/10;
    }
    if(i==sum)
        printf("水仙花数为%d",i);
}
    return 0;
}
12 回复
#2
a1020342020-02-23 14:18
为什么运行不了呢
#3
叶纤2020-02-23 14:33
水仙花数是什么?
#4
吕孟伟2020-02-23 16:48
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int i,a,sum,temp;
    for(i=100; i<=1000; i++) {
        sum = 0;
        temp = i;
        while(temp) {
            a=temp%10;
            sum=sum+a*a*a;
            temp/=10;
        }
        if(i == sum)
            printf("水仙花数为%d\n",i);
    }
    return 0;
}
#5
自学的数学2020-02-23 19:46
回复 3楼 叶纤
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
#6
叶纤2020-02-23 20:36
回复 5楼 自学的数学
谢谢大大,我尝试着敲了一遍发现和楼主出现同样的问题,然后看了几位大大的码,懂了一丢丢
#7
xianfajushi2020-02-23 23:47
这些都是很基础的,直接写未调试。
int aa=153,aaa=0,aaaa=0,a=aa;
while(aa)aaa=aa%10,aaaa+=aaa*aaa*aaa,aa/=10;if(a==aaaa)cout<<a<<endl;
#8
chxchxkkk2020-02-24 01:01
while(a), a没有初始化
#9
xianfajushi2020-02-24 08:18
我的编写习惯是每个变量都有初始化的安全编程。
#10
叶纤2020-02-24 13:23
回复 9楼 xianfajushi
不知道为什么,每次看你的代码都想笑,别想多,没有贬义词,通过你的代码也能学习到一些东西的
#11
yu17761517872020-02-24 13:36
#include <stdio.h>

int main(){
    int i,tuple,a;
    for(i=100;i<1000;i++)
  {
    int sum=0;
    tuple=i;
    while(tuple)
    {
        a=tuple%10;
        sum=sum+a*a*a;
        tuple/=10;
    }   
    if(i==sum){
    printf("水仙花数为%d\n",i);
    }  
   
  }
    return 0;
}
\\大佬,您康康我这吧,主要就是变量的应用
#12
xianfajushi2020-02-24 15:08
哦,这么一说,我还真有点丈二,那你看虾米样的不会有感觉?大概我的代码不合时宜,与教材和别人想法不同的意思?
我写过不同形式的水仙花数,有时是随性而作,有时是改别人的提问,无固定形式,本来实现题目的程序就有各式各样,无固定思路与写法,没虾米奇怪的。

[此贴子已经被作者于2020-2-24 15:19编辑过]

#13
adminzj2020-02-24 15:23
水仙花数练的不就是取位吗,其它的都是小学问题,不关编程的事
1