注册 登录
编程论坛 C++教室

求水仙花数写法的详细解释

Ganplank 发布于 2012-03-02 19:05, 521 次点击
# include <stdio.h>
# include <math.h>

bool IsNarcissus (int number);
int n=3;   

int main()
{
    int i;
    for(i=pow(10,n-1); i<pow(10,n); ++i)
    {
        if (IsNarcissus (i))
        {
            printf("%d \n",i);
        }   
    }
    return 0;
}

bool IsNarcissus (int number)
{
    int sum=0;
    int x=number;
    while(x!=0)
    {
        sum += pow((x%10),n);
        x /= 10;
    }
    if (sum == number)
    {
        return true;
    }
    else
    {
        return false;
    }
}


求写法的详细解释
5 回复
#2
yuccn2012-03-03 08:36
如果你理解什么是水仙花数 那么就没有必要发这个帖子了吧
加油 你行的
#3
习惯被动2012-03-06 19:58
程序代码:
#include<iostream>
#include<math.h>
using namespace std;

bool IsNarcissus(int a);//判断是不是水仙花数,是则返回真

void main()
{
    cout<<"请输入多于两位数的整数:";
    int a;
    cin>>a;
    if(IsNarcissus(a))cout<<"是水仙花数.\n"<<endl;
    else
        cout<<"不是水仙花数.\n"<<endl;
}
bool IsNarcissus(int a)
{
    bool p=false;
    int b,c,n,i,d,sum(0);
    c=a;d=a;
    for(i=1;c/10!=0;i++){c=c/10;}//判断输入的整数有几位(n)
    n=i;
    for(i=0;i<n;i++)//求该整数的各位数字的n次方之和
    {b=a%10;
     a=a/10;
     sum=sum+pow(b,n);}
    if(sum==d){p=true;}//若满足水仙花数的条件则返回真
    return (p);
}
   







试过,应该没问题。
#4
Ganplank2012-03-07 15:02
回复 2楼 yuccn
恩~~  谢谢~~
#5
Ganplank2012-03-07 15:03
回复 3楼 习惯被动
OK    谢谢咯~~~
#6
习惯被动2012-03-07 22:26
加油吧
1