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<stdio.h>
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<stdio.h>
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<stdio.h>
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);
          
}

程序运行结果如下图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想吃荔枝_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值