首页 > 分享 > 输出水仙花数。输入一个正整数(3=n=7),输出所有的n

输出水仙花数。输入一个正整数(3=n=7),输出所有的n

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

#include<stdio.h>

#include<math.h>

int main(){

    int i,n,j,temp;

    /*    i:对n位数进行遍历;

        n:n位数;

        j:控制n位数的各个位的n次幂

        item:每一位的 n次幂的和,如 1^3 + 5^3 + 3^3

    */

    double item;

    /*  temp:暂存变量i,如153;防止后续的操作改变i值,从而无法判断i是否为水仙花数

        使用double类型的原因:

            math.h中的pow()返回值为double型;用int型存储会出现问题,例如n=3时解不全面

    */

    printf("input n : ");

    scanf("%d",&n);

    if(n>=3&&n<=7){

        /*

            对n位数 10..00 ~ 99..99 遍历找出其中的水仙花数;

            例如n=3,pow(10,n-1) == 100,pow(10,n) == 1000 ,则循环在100~999进行

        */

        for(i=pow(10,n-1);i<pow(10,n);i++){

            temp = i;   //暂存n位数 i 的值

            j = n;      //控制逐位操作的次数

            item = 0;   //各个位的n次幂的和,如 1^3 + 5^3 + 3^3;

            //需要对每个n位数进行判断,所以每次循环都要清零

            //将各个位的n次幂相加

             while(j>0){

                item += pow(temp%10,n); //每次取出最低位,计算其n次幂,如153%10 == 3,3^3

                temp /= 10;       //将暂存的数除以10,即去除最低位,如153 -> 15

                j--;

            }

            if(item == i)   //判断是否为水仙花数

                printf("%d is a daffodil number n",i);

        }

    }else{

        printf("invalid valuen");

    }

    return 0;

}

相关知识

PTA所谓水仙花数是指一个m位数 输入一个3位数n,输出所有介于100至n之间的位数为3的水仙花数 求1到正整数n之间的偶数之和,输出结果后换行。
n位水仙花数
C语言:输出所有的水仙花数
python 水仙花数 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。 例如:153=1×1×1+5×5×5+3×3×3。
C语言3位~7位水仙花数(加强版)
玫瑰花数 一个四位数等于各位数字的四次方之和,则为玫瑰花数。如:1634=1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4
c++中输出“水仙花数”
python练习 013 打印水仙花数
打印水仙花数
C语言之水仙花数

网址: 输出水仙花数。输入一个正整数(3=n=7),输出所有的n https://m.huajiangbk.com/newsview391246.html

所属分类:花卉
上一篇: 水仙茶分为几种类型 水仙花的形态
下一篇: C++怎么判断一个数是水仙花数?