C语言————输出所有的玫瑰花数

C语言————输出所有的玫瑰花数,第1张

C语言————输出所有的玫瑰花

“玫瑰花数”是指一个四位数,其各位数字的4次方和等于该数本身。

(如:1634=1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4)

注意点:

①共有四位数(即1000~9999)可设为a,b,c,d分别代表个位,十位,百位,千位

判断的是否为玫瑰花数条件就是该未知数n的每一位的四次方之和等于该数本身

③如何得到该四位数的每一位数?

比如1634,若想得到个位数4,则可以:

a=n%10;   //n%10/即1634求余得到末尾的4,就可以得到该数的个位数

若想得到1634的十位数,则可以:

b=n/10%10;   //1634先除10得到163,163再对10求余得到的就是163的个位数3,也就是1634的十位数

若想得到该数的百位数,则可以:

c=n/100%10;  //1634先除100得到的是16,再对16求余得到的是6,就得到1634的百位数

那么算取1634的千位,则可以:

d=n/1000;   //1634除1000得到1,也就是1634的千位数

看下面的程序吧!

【方法一】:

#include
void main( )
{    int a,b,c,d,n=1000;
     while(n>999&&n<10000)   //判断输入的数是否为四位数
       {  
         a=n%10;
         b=n/10%10;
         c=n/100%10;
         d=n/1000;    
         if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==n)  printf("%d是玫瑰花数n",n);
         else  printf("%d不是玫瑰花数n",n);
         n++;
        }
      printf("%d不是玫瑰花数n",n);
      n++;
}

【方法二】: 

#include
void main( )
{    int a,b,c,d,n;
     for(n=1000;n<10000;n++)    //判断输入的数是否为四位数
         { a=n%10;
           b=n/10%10;
           c=n/100%10;
           d=n/1000;    
           if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==n)  printf("%d是玫瑰花数n",n);
           else  printf("%d不是玫瑰花数n",n);
          }
}

小结:

如果只是判断一个数是否为玫瑰花数则不用加上循环,直接输入一个数判断就行了。如:

#include
void main( )
{    int a,b,c,d,n;
     scanf("%d",&n);    //输入被判断的数
     a=n%10;
     b=n/10%10;
     c=n/100%10;
     d=n/1000;    
     if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==n)  printf("%d是玫瑰花数n",n);
     else  printf("%d不是玫瑰花数n",n);
          
}

程序运行结果如下图:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5698450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存