华为寒假作业-c-初级-阿姆斯特朗数

【题目描述】求n(n ≤ 65536)以内的所有阿姆斯特朗数。阿姆斯特朗数:各位数的三次方和如果等于自身,例如407
【思路】用【n%10】的方法逐个得到每一位的数,然后求三次方并相加。注意,因为提前不知道该数是几位的,如果想用数组保存每一位的数是不行的,因为在C语言里面没有变长数组,也没有JAVA的ArrayList,替代的方法是while(n>0){sum = sum + func(n%10,3); n = n/10;}这样可以得到每一位的数
【代码】
/*
功能: 求n(n ≤ 65536)以内的所有阿姆斯特朗数
原型:
int CalcArmstrongNumber(int n);

输入参数:
int n: n ≤ 65536

返回值:
n以内的阿姆斯特朗数的数量。
*/
int func(int m, int n)
{
if(n == 1)
{
return m;
}
else
{
return m*func(m,n-1);
}
}
int CalcArmstrongNumber(int n)
{
if(n< =65536) { int tmpN; int count = 0; int sum; /*在这里实现功能*/ while(n>1)
{
tmpN = n;
sum = 0;
while(tmpN>0)
{
sum = sum + func(tmpN%10,3);
tmpN = tmpN/10;
}
if(sum == n)
{
count++;
}
n–;
}
return count;
}
else
{
return -1;
}
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*