“玫瑰花数”是指一个四位数,其各位数字的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的千位数
【方法一】:
#includevoid 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++; }
【方法二】:
#includevoid 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); } }
小结:
如果只是判断一个数是否为玫瑰花数则不用加上循环,直接输入一个数判断就行了。如:
#includevoid 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); }
程序运行结果如下图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)