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

  1. /*  
  2.  * Copyright (c) 2014, 烟台大学计算机学院  
  3.  * All rights reserved.  
  4.  * 文件名称:test.cpp  
  5.  * 作    者:刘畅   
  6.  * 完成日期:2014年 11 月 6 日  
  7.  * 版 本 号:v1.0  
  8.  *  
  9.  * 问题描述:请输出n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。
  10. * 输入描述: for语句自动找寻符合条件的值;
  11.  * 程序输出:n=a!+b!+c!;
  12. */
  13. <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;
    }
    

     
  14. 运行结果:
  15. 第11周项目4-特殊三位数_第1张图片
  16.  
  17.  
  18. 知识点总结:
  19. 用了函数,可以少写多少行代码啊。。。
  20.  
  21. 学习心得:
  22. 在书上找到了求阶乘的代码,转换为函数却偷工减料只输入了当n>1时的情况,最后的结果是分段错误。。。好一个分段错误,吸取教训了.
  23.  
  24. 真的醉了;题目都没看清就写,a、b、c分别是n的百、十、个位数。这个条件被忽视了..为自己的粗心感到自责,以后不会再犯了;错误已改正;感谢0哥的提醒。。

你可能感兴趣的:(编程,C++,namespace,源代码,iostream)