写了一个判断水仙花数的小程序,本人新手,勿喷!求指点!

#include <stdio.h>


void Func_Bit_Sum(int *Tmp_Sum, int n)
{
int i_Number = *Tmp_Sum;
int Sum_Number = 1;
while(n--)
{
Sum_Number *= i_Number;
}
*Tmp_Sum = Sum_Number;
}


void Func_Ten(int *Ten_Num,int n)
{
int Tmp = *Ten_Num;
if(1 == n)
{
*Ten_Num = 1;
}
while(n >= 2)
{
Tmp *= 10;
n--;
}
*Ten_Num = Tmp;
}


int func_is_flower_number(int Number)
{
if(Number < 0)
return -1;
int iTmp_Size = Number;
int Number_Size = 0;
while(iTmp_Size > 0)
{
iTmp_Size /= 10;
Number_Size++;
}
int Bits = Number_Size;
int iTmp_Val = Number;
int Bit_Val;
int Sum_bits = 0;
while(iTmp_Val > 0)
{
int ten_num = 1;
Func_Ten(&ten_num, Number_Size--);
Bit_Val = iTmp_Val / ten_num;
iTmp_Val -= Bit_Val * ten_num;
Func_Bit_Sum(&Bit_Val, Bits);
Sum_bits += Bit_Val;
}
if(Sum_bits == Number)
return 0;
else
return -1;
}


int main()
{
int i_Num;
int iRet = -1;
scanf("%d",&i_Num);
getchar();
iRet = func_is_flower_number(i_Num);
if(0 == iRet)
printf("Yes!\r\n");
else
printf("No!\r\n");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值