三位数ABC,如果A³+B³+C³=ABC,那么这个数就称作水仙花数。例如153=1³+5³+3³。153就称作水仙花数。
这是已写的。。。但是结果在一行。。。。要求输出每个数字占一行,怎么让结果每个数字占一行?。。
#include<stdio.h>
int main()
{
int i,a,b,c;
for(i=100;i<=999;i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if(i == a*a*a + b*b*b + c*c*c)
printf("%d is a daffodil number.", i);
}
return 0;
}
//输出水仙花
voidNarcissusNumber()
{for(inti=100;i<1000;i++)
{
intsum=0;
inttemp=i;
intrem;
for(intj=0;j<3;j++)
{rem=temp%10;
temp/=10;
sum+=rem*rem*rem;
}if(sum==i)
{
printf("%d\n",i);
}
}
}
扩展资料
C语言:输出9*9口诀
#include"stdio.h"
main()
{
inti,j,result;
printf("\n");
for(i=1;i<10;i++)
{for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
}
printf("\n");/*每一行后换行*/
}
}
在100-999之间的三位数ABC,满足A³+B³+C³=ABC,就称ABC为水仙花数。
根据你的描述和提供的代码,只需要对输出的结果进行换行即可,修改后的代码如下:
#include<stdio.h>
int main()
{
int i,a,b,c;
for(i=100;i<=999;i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if(i == a*a*a + b*b*b + c*c*c)
printf("%d is a daffodil number.\n", i);
}
return 0;
}
程序运行结果:
扩展资料:
除了上面使用的C语言实现外,常用的实现语言还有;
ALGOL代码实现“水仙花数”:
begin
integer i,j,k;
for i := 1 step 1 until 9 do
for j := 0 step 1 until 9 do
for k := 0 step 1 until 9 do
if i×i×i + j×j×j + k×k×k = 100×i + 10×j + k then
print (100×i + 10×j + k);
end
PHP代码实现“水仙花数”:
<?php
//使用系统自带函数,即可实现幂运算,何必画蛇添足,自己写函数
functionis_narcissistic($n)
{
$hundreds=floor($n/100);//分解出百位
$tens=floor($n/10)%10;//分解出十位
$ones=floor($n%10);//分解出个位
return(bool)(pow($hundreds,3)+pow($tens,3)+pow($ones,3)==$n);
}
for($i=100;$i<1000;++$i)
{
if(is_narcissistic($i))
echo$i."\n";
}
die();
?>
参考资料:
本回答被网友采纳水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。判断一个数是否为水仙花数需要拆分数位,求幂再相加。不过这道题限定了范围,都是三位数,所以可以使用3重循环分别代表3个数位,这样就省去了拆分的麻烦。
代码如下:
int main()
{
int i, j, k, sum;
sum = 0;
for (i = 1; i < 10; i++)
for (j = 0; j < 10; j++)
for (k = 0; k < 10; k++)
if ((i*i*i + j*j*j + k*k*k) == (i*100 + j*10 + k))
printf("%d\n", i*100 + j*10 + k);
return 0;
}
C语言经典案例之水仙花数