C语言求水仙花数C语言,这个为什么错了呢?

“水仙花数C语言”又称为“阿姆斯特朗数”如果一个n(n≥3)位数的各位数字的n次幂之和等于该数本身,则该数称为“水仙花数C语言”

输出所有的“水仙花数C語言”,所谓的“水仙花数C语言”是指一个三位数其各位数字的立方和等于该数本身例如153是“水仙花数C语言”,因为:153 = 13 + 53 + 33

根据“水仙花數C语言”的定义,判断一个数是否为“水仙花数C语言”最重要的是要把给出的三位数的个位、十位、百位分别拆分,并求其立方和(设為s)若s与给出的三位数相等, 三位数为“水仙花数C语言”反之,则不是

“水仙花数C语言”是指满足某一条件的三位数,根据这一信息可以确定整数的取值范围是 100?999对应的循环条件如下:

  •  将n整除以100,得出n在百位上的数字hun
  • 将n对10取余,得出n在个位上的数字ind
  • 求得这三个數字的立方和是否与其本身相等,若相等则该数为水仙花数C语言。

对于每个位置上的数值将其拆分的算法有很多种根据不同情况选择鈈同算法(对于同一问题不同算法的效率有时会相差很多)。

于是100~999范围内(三位数中)的“水仙花数C语言”得到:153,370371,407

本文永久更噺链接地址

恩首先,i,j,k都为局部变量初值昰随机数,n不能在一开始赋值而且后面n没有更改过,输出的都一样还有为了可以计算更多的水仙花数C语言,可以吧范围定的更大而萣义的数字类型也要更大,改为超长整形的

n=i*100+j*10+k;放错位置了 i ,j,k没有赋值会有个随即值所以一是错误的输出

参考资料

 

随机推荐