为什么我输入任何数都显示“不是水仙花数”

来源:百度知道 编辑:UC知道 时间:2024/06/22 01:18:27
为什么我输入任何数都显示“不是水仙花数”,我想测试就是四位和四位数以上都能测试出它是不是水仙花数。以下是我的coding。纠结啊
我都快把我整个宿舍得人弄哭了。求教个人大侠~
一个刚学C++两天的小姑娘上
#include<iostream.h>
#include<math.h>
int input()
{ int i;
cout<<"请输入所选的位数:"<<"\n";
cin>>i;
return i;
}
bool valid_num(int n,int i)
{ int b=pow(10,i-1);
if((n/b==0)||(n/b>=10)) return false;
else return true;
}
bool is_a_sxh(int n,int a)
{
if(n==a) return true;
else return false;
}

int cal(int n,int i)
{ int m;
int k=i;
int sum=0;
for(i;i>=1;i--)
{ int b=pow(10,i-1);
m=n/b;
n=n-m*b;
sum=sum+pow(m,k);
}

if(is_a_sxh(n,sum)==1) cout<<"是水仙花数"<<endl;
else cout<<"不是水仙花数"<<endl;
return n;
}

int main()
{
int i,n;
i=input();

问题很严重啊。。。
看在程序里的注释吧

#include<iostream>
#include<math.h>
using namespace std;
int input()
{
int i;
cout<<"请输入所选的位数:"<<"\n";
cin>>i;
return i;
}
bool valid_num(int n,int i)
{
int b=(int)pow(10,i-1);
if((n/b==0)||(n/b>=10))
return false;
else
return true;
}
bool is_a_sxh(int n,int a)
{
if(n==a)
return true;
else
return false;
}

int cal(int n,int i)
{
int m;
int k=i;
int sum=0;
int temp = n;
int b;
for(i;i>=1;i--)
{
b=(int)pow(10,i-1);
m=n/b;
n=n-m*b; //你这里把N给改了,怎么可能还会是最开始传递过来的实参?
sum=sum+(int)pow(m,k);
}
if(is_a_sxh(temp,sum))
{
cout<<"是水仙花数"<<endl;
}
else
cout<<"不是水仙花数"<