您的位置:首页 > 其它

第11周项目4-特殊三位数

2014-11-06 19:35 246 查看
/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:刘畅
* 完成日期:2014年 11 月 6 日
* 版 本 号:v1.0
*
* 问题描述:请输出n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。;
* 输入描述: for语句自动找寻符合条件的值;
* 程序输出:n=a!+b!+c!;
*/
<pre class="cpp" name="code">#include <iostream>
using namespace std;
long fac(int);
int main()
{
    int a,b,c,n;
    long x,y,z;
    for (n=100; n<=999; ++n)
        for (a=1; a<=9; ++a)
            for (b=0; b<=9; ++b)
                for (c=0; c<=9; ++c)
                {
                    x=fac(a);
                    y=fac(b);
                    z=fac(c);
                    if (n==x+y+z&&n==a*100+b*10+c)
                        cout<<n<<"="<<a<<"!+"<<b<<"!+"<<c<<"!"<<endl;
                }
    cout<<endl;
    return 0;
}

long fac(int n)
{
    long f;
    if (n<0)
    {
    cout<<"n<0,data error!"<<endl;
    f=-1;
    }
    else if (n==0||n==1)
        f=1;
    else
        f=fac(n-1)*n;
    return f;
}




运行结果:





知识点总结:
用了函数,可以少写多少行代码啊。。。

学习心得:
在书上找到了求阶乘的代码,转换为函数却偷工减料只输入了当n>1时的情况,最后的结果是分段错误。。。好一个分段错误,吸取教训了.

真的醉了;题目都没看清就写,a、b、c分别是n的百、十、个位数。这个条件被忽视了..为自己的粗心感到自责,以后不会再犯了;错误已改正;感谢0哥的提醒。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: