C语言"水仙花数"问题

题目:所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如:153是“水仙花数”,因为:153=13+33+53。
我写的程序是:
#include<stdio.h>
#include<math.h>
main()
{
int n;
int num1,num2,num3;

for(n=100;n<=999;n++)
{
num1=n/100;
num2=n%100/10;
num3=n%10;
if(n==pow(num1,3)+pow(num2,3)+pow(num3,3))
printf("%d\n",n);
}
}
为什么我运行出来只有:153,370,371三个数,而没有407呢?求大神帮助,感激不尽!!

#include<stdio.h>
#include<math.h>
main()
{
        int n;
        int num1,num2,num3;

        for(n=100;n<=999;n++)
        {
                num1=n/100;
                num2=n%100/10;
                num3=n%10;
                if(n==num1*num1*num1+num2*num2*num2+num3*num3*num3) //这样,可以保证准确
                        printf("%d\n",n);
        }
        system("pause");
}

因为pow()的返回值是double,但浮点数是不精确的,所以,会丢失数据

温馨提示:内容为网友见解,仅供参考
无其他回答

如何实现用C语言输出所有的“水仙花数”?
一、问题描述:输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 13 + 53 + 33。二、问题分析:根据“水仙花数”的定义,判断一个数是否为“水仙花数”,最重要的是要把给出的三位数的个位、十位、百位分别拆分,并...

如何实现用C语言输出所有的“水仙花数”?
1. 问题定义:目标是寻找所有三位数,其每个位上数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153 = 1^3 + 5^3 + 3^3。2. 分析问题:要验证一个三位数是否为“水仙花数”,需要将该数拆分为百位、十位和个位上的数字,计算这三个数字的立方和,如果立方和等于原数,则该数...

C语言编写水仙花数
本文提供了一个C语言程序实现判断一个数是否为水仙花数的示例代码。水仙花数定义为一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为1的立方(1)+ 5的立方(125)+ 3的立方(27)等于153。程序首先定义了长整型变量m存储输入的数,变量s存储各位数字之和,变量n用于存放去...

急求C语言问题:求100-999之间的水仙花数!用C语言写啊
水仙花数是:153 370 371 407

c语言判断水仙花数
C语言输出水仙花数的具体分析和实现流程如下:1、水仙花数的含义 “水仙花数”是一个三位数其各位数字的立方和等于该数本身。例如:3^3 + 7^3+ 0^3 = 370 2、算法分析 把给出的某个三位数的个位、十位、百位分别拆分,并求其立方和(设为sum),若sum与给出的三位数相等, 则为“水仙花数”...

c语言 编程求三位数的水仙花数?
int a,b,c; \/\/定义百、十、个位变量 for(i=100;i<=999;i++) \/\/循环从100到999 { a=i\/100; \/\/取百位 b=i%10\/10; \/\/取十位 c=i%10; \/\/取个位 if(i==a*a*a+b*b*b+c*c*c) \/\/判断是否为水仙花数 { printf("%d\\n",i); \/\/输出水仙花数 } } return 0;} ...

C语言经典案例分析(水仙花数)
在计算机编程领域,C语言堪称基础。今天,我们将深入探讨两个经典案例:水仙花数和素数,旨在揭示学习C语言的精髓。这两个案例不仅具有学习价值,而且在编程实践上有着广泛的应用。它们可以作为题目、问题和解决方案的蓝本,考验着我们的逻辑思维和编程技能。接下来,我们聚焦于水仙花数的解题策略。首先,让...

急需用C语言解决以下问题!! 一千以内的水仙花数 一百以内偶数的阶乘之和...
1、计算水仙花数 include <stdio.h>void main(){int i,a,b,c;for(i=100;i<=999;i++){a=i%10;b=i\/10%10;c=i\/100;if(a*a*a+b*b*b+c*c*c==i)printf("%d ",i);}} 运行结果截图:2、100以内偶数的阶乘之和 include <stdio.h>void main(){int i,j;double k=1,sum=0...

c语言编程题 找出所有的水仙花数,水仙花数是指一个3位数
int c=i\/100;\/\/判断该数是否等于【个位的三次方+十位的三次方+百位的三次方】if(i==(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3))){ System.out.println(i+"是水仙花数");} } } Test public void test(){ isNarcissusNumber();} \/ 结果:--->153是水仙花数 --->370是水仙花...

c语言,一个新手写的一个关于水仙花数的代码,运行后无结果,求大佬来找bu...
1、循环体内的语句不止一句,要用大括号括起来。2、c、d都从1开始循环不正确,会漏掉十位数字、个位数字至少有一个是0的数。例如407是水仙花数,按你写的循环会被直接漏掉。3、水仙花数不止一个,要想在“所有水仙花数如下:”的后面一次输出,要把提示语句放在前面。4、主函数类型为int型,最后要...

相似回答