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

求大神们提供一个可行的思路和算法吧,小弟快死了。。... 求大神们提供一个可行的思路和算法吧,小弟快死了。。 展开
 我来答
我是比丘猴
推荐于2017-11-25 · TA获得超过671个赞
知道小有建树答主
回答量:113
采纳率:0%
帮助的人:176万
展开全部
楼主你好~
根据要求,代码如下:
#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;
}

希望楼主能看懂哈~祝楼主学习进步~~
瓜条文库
2012-11-10 · TA获得超过661个赞
知道小有建树答主
回答量:470
采纳率:75%
帮助的人:112万
展开全部
#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();
}

给您参考三位数的水仙花数。
希望对您有所帮助!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-11
展开全部
什么时候要?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式