问题及代码:
/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:test.cpp
*作 者:陈文青
*完成日期:2014年11月11日
*版 本 号:v1.0
*
*问题描述:请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘
*程序输入:
*程序输出:满足条件的若干个整数n
*/
#include<iostream>
using namespace std;
int fact(int n); //声明自定义函数,用于求n的阶乘
int main()
{
int n,a,b,c,sum;
cout<<"满足条件n=a!+b!+c!的所有三位数有:"<<endl;
for(n=100; n<1000; ++n)
{
c=n%10; //求个位的数字c
b=(n/10)%10; //求百位的数字b
a=n/100; //求十位的数字a
sum=fact(a)+fact(b)+fact(c); //调用自定义函数,求阶乘和
if(sum==n)
cout<<n<<' ';
}
return 0;
}
int fact(int n) //自定义函数,阶乘
{
int i,x=1;
for(i=1; i<=n; ++i)
{
x=x*i;
}
return x;
}
运行结果:
知识点总结:
调用自定义函数,解决数学问题
学习心得:
算法如果复杂,就要建立一个自定义函数,以便以后方便使用。调用自定义函数是很好的一种解决方案。