输入一个n,把n(1<=n<=6)位数的水仙花数都输出来;C语言初学者

求大神们提供一个可行的思路和算法吧,小弟快死了。。

楼主你好~
根据要求,代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int i,n,flag,temp,sum=0,num=0;
printf("请输入所要求的水仙花数位数(1<=n<=6):\n");
scanf("%d",&n);
while(n<1||n>6)
{
printf("位数不正确!请重新输入(1<=n<=6):\n");
scanf("%d",&n);
}
flag=pow(10,n);
for(i=flag/10;i<flag;i++) //从10的n-1次方到10的n次方里找n位的水仙花数
{
sum=0; //计数清零
temp=i; //临时数,用来替代i进行计算
while(temp!=0) //当临时数没变成0时执行循环
{
sum+=pow((temp%10),n); //取个位的数进行n次方,累加进sum
temp/=10; //去掉目前temp的个位
}
if(sum==i) //循环过后,累加的sum值等于原值的话,满足水仙花数条件,输出数字。
{
printf("%d\n",i);
num++; //计算当前水仙花数个数。
}
}
printf("%d位水仙花数有%d个\n",n,num);
return 0;
}

希望楼主能看懂哈~祝楼主学习进步~~
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-10
#include "stdio.h"
main()
{
int i,b1,b2,b3;
for(i=100;i<999;i++)
{
b1=i%10;
b2=i/10%10;
b3=i/100;
if(pow(b1,3)+pow(b2,3)+pow(b3,3)==i)
printf("%d",i);
}
getch();
}

给您参考三位数的水仙花数。
希望对您有所帮助!本回答被网友采纳
第2个回答  2012-11-11
什么时候要?
相似回答