新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 计算机科学论坛计算机技术与应用『 C/C++编程思想 』 → 求 N 阶乘的源码 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 12264 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 求 N 阶乘的源码 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客楼主
    发贴心情 求 N 阶乘的源码

    首先建一基于对话框的窗体,下面给出关键源码:


    CNjDlg.cpp

    void CNjDlg::OnSave()
    {
     const int nSize = 8000;//2000个阶乘空间
     
     int nResult[nSize];
     memset(nResult,0,nSize*sizeof(int));
     UpdateData(TRUE);//取屏幕输入数据
     
     nResult[0] = 1;
     SYSTEMTIME sTime;//系统当前时间(计算耗费时间用)
     GetSystemTime( &sTime );
     WORD fsecond = sTime.wSecond;
     WORD fMsecond = sTime.wMilliseconds;
     int nNeed = atoi(m_count);
     
     while(nNeed)
     {
      for(int i=0; i<nSize; i++)
      {
       if(nResult[i])//阶乘计算
       {
        nResult[i] =  nResult[i] * nNeed;
       }
      }
      
      for(i=0; i<nSize-4; i++)//以数组方式格式化数据
      {
       int nTemp = nResult[i];
       if(nTemp)
       {
        nResult[i] = nTemp%10;
        if(nTemp>=10)
        {
         nResult[i+1] += (nTemp/10)%10;
        }
        
        if(nTemp>=100)
        {
         nResult[i+2] += (nTemp/100)%10;
        }
        
        if(nTemp>=1000)
        {
         nResult[i+3] += (nTemp/1000)%10;
        }
        if(nTemp>=10000)
        {
         nResult[i+4] += (nTemp/10000)%10;
        }
       }
      }
      nNeed--;
      
     }
     
     GetSystemTime( &sTime ); //计算耗费时间
     WORD esecond = sTime.wSecond - fsecond;
     WORD eMsecond = sTime.wMilliseconds - fMsecond;
     CStdioFile sf;//文件方式处理结果
     if(sf.Open("阶乘结果.txt",CFile::modeCreate | CFile::modeNoTruncate |CFile::modeWrite))
     {
      CString strOut;
      int k=0;
      char buffer[20];
      sf.SeekToEnd();
      strOut="\r\n计算 " + m_count + " 的阶乘结果:\r\r\n";
      sf.WriteString(strOut);
      for(int i=nSize-1; i>=0; i--)//去掉前面为零的无效字符
      {
       if(nResult[i])
       {
        break;
       }
      }
      for(i; i>=0; i--,k++)
      {
       if(k%50 == 0)//每行写50的字符
       {
        strOut = "\r\n";
        sf.WriteString(strOut);
       };
       //      _itoa( nResult[i], buffer, 10 );//此处理方式也可以
       sprintf( buffer,"%d", nResult[i] );//此处理方式可以在数字间加空格
       sf.WriteString(buffer);//输出结果
      }
      
      sprintf( buffer,"\r\n耗时: %d 秒 %d 毫秒", esecond, eMsecond );
      sf.WriteString(buffer);
      
      strOut="\r\n=======================================================\r=======================================================\r\n";
      sf.WriteString(strOut);
      
      sf.Close();//关闭文件
      MessageBox("计算成功!","提示",MB_ICONINFORMATION);
     }
     else
     {
      MessageBox("计算失败!","提示",MB_ICONINFORMATION);
     }
    }


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/11 10:44:00
     
     xm_hcyoo 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:67
      门派:XML.ORG.CN
      注册:2006/7/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给xm_hcyoo发送一个短消息 把xm_hcyoo加入好友 查看xm_hcyoo的个人资料 搜索xm_hcyoo在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看xm_hcyoo的博客2
    发贴心情 
    这么麻烦.我用C几步就编好啦.呵呵
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/21 1:11:00
     
     xm_hcyoo 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:67
      门派:XML.ORG.CN
      注册:2006/7/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给xm_hcyoo发送一个短消息 把xm_hcyoo加入好友 查看xm_hcyoo的个人资料 搜索xm_hcyoo在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看xm_hcyoo的博客3
    发贴心情 
    这么麻烦.我用C几步就编好啦.呵呵
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/21 1:11:00
     
     elfstone 帅哥哟,离线,有人找我吗?射手座1983-12-6
      
      
      等级:大四(总算啃完XML规范了)
      文章:185
      积分:1177
      门派:IEEE.ORG.CN
      注册:2006/2/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给elfstone发送一个短消息 把elfstone加入好友 查看elfstone的个人资料 搜索elfstone在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看elfstone的博客4
    发贴心情 
    楼上的有仔细看过源码么?

    ----------------------------------------------
    Ich liebe erst meines Leben...

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/21 12:04:00
     
     wx851205 帅哥哟,离线,有人找我吗?射手座1985-12-5
      
      
      等级:大一新生
      文章:6
      积分:91
      门派:XML.ORG.CN
      注册:2006/5/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wx851205发送一个短消息 把wx851205加入好友 查看wx851205的个人资料 搜索wx851205在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wx851205的博客5
    发贴心情 
    ??? 怎么编译的时候出现错误?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/22 23:05:00
     
     gln 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:6
      积分:87
      门派:IEEE.ORG.CN
      注册:2006/7/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gln发送一个短消息 把gln加入好友 查看gln的个人资料 搜索gln在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gln的博客6
    发贴心情 
    我这也是

    ----------------------------------------------
    每天进步一点点!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/23 20:17:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客7
    发贴心情 
    以下是引用wx851205在2006-7-22 23:05:00的发言:
    ??? 怎么编译的时候出现错误?


    VC环境下编译的

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/8/10 13:04:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客8
    发贴心情 
    以下是引用xm_hcyoo在2006-7-21 1:11:00的发言:
    这么麻烦.我用C几步就编好啦.呵呵

    结果如下:


    计算 50 的阶乘结果:


    30414093201713378043612608166064768844377641568960

    512000000000000

    耗时: 0 秒 0 毫秒

    =======================================================
    =======================================================

    计算 500 的阶乘结果:


    12201368259911100687012387854230469262535743428031

    92842192413588385845373153881997605496447502203281

    86301361647714820358416337872207817720048078520515

    93292854779075719393306037729608590862704291745478

    82424912726344305670173270769461062802310452644218

    87878946575477714986349436778103764427403382736539

    74713864778784954384895955375379904232410612713269

    84327745715546309977202781014561081188373709531016

    35632443298702956389662891165897476957208792692887

    12817800702651745077684107196243903943225364226052

    34945850129918571501248706961568141625359056693423

    81300885624924689156412677565448188650659384795177

    53608940057452389403357984763639449053130623237490

    66445048824665075946735862074637925184200459369692

    98102226397195259719094521782333175693458150855233

    28207628200234026269078983424517120062077146409794

    56116127629145951237229913340169552363850942885592

    01872743379517301458635757082835578015873543276888

    86801203998823847021514676054454076635359841744304

    80128938313896881639487469658817504506926365338175

    05547812864000000000000000000000000000000000000000

    00000000000000000000000000000000000000000000000000

    00000000000000000000000000000000000

    耗时: 0 秒 47 毫秒

    =======================================================
    =======================================================

    计算 2000 的阶乘结果:


    33162750924506332411753933805763240382811172081057

    80394571935437060380779056008224002732308597325922

    55402352941225834109258084817415293796131386633526

    34368890563405855616394060511725257187064785639354

    40454052439574670376741087229704346841583437524315

    80877533645127487995436859247408032408946561507233

    25065279765575717967153671868935905611281587160171

    72326571561100042140124204338425737127001758835477

    96899921283528996665853405579854903657366350133386

    55040117201215263548803826815215224692099520603156

    44185654806759464970515522882052348999957264508140

    65536678969532101467622671332026831552205194494461

    61823927520402652972263150257475204829606475092739

    41658562835317795744828763145964503739913273341772

    63608852490093506621610144459709412707821313732563

    83157230201994991495831647094277447387032798554967

    42986088393763268241524788343874695958292577405745

    39837501585815468136294217949972399813599481016556

    56387603422731291225038470987290962662246197107660

    59315502018951355831653578714922909167790497022470

    94611937607785165110684432255905648736266530377384

    65039078804952460071254940261456607225413630275491

    36715834060978310749452822174907813477096932415561

    11339828051358600690594619965257310741177081519922

    56451677857145805660218565476095237746301667942248

    84444857983498015480326208298909658573817518886193

    76692828279888453584639896594213952984465291092009

    10371004614944991582858805076186792494638518087987

    45128914080193400746259200570987295785996436506558

    95612410231018690556060308783629110505601245908998

    38341079936790205207685866918347790655854470014869

    26569246319333376124280974200671728463619392496986

    28468719993450393889367270487127172734561700354867

    47750910295552395354794110742191330135681954109194

    14627664175421615876252628580898012224438902486771

    82054959415751991701271767571787495861619665931878

    85514183578209260148207177733173539603430496908207

    05899587013819808130355901607629083885745612882176

    98136182483576739218303118414719133986892842344000

    77924669120976673165143349443747323563657204884447

    83318549416930301245316762327453678793228474738244

    85092283139952509732505979127031047683601481191102

    22925337269769382367005756561240029057604385285290

    29376064795334581796661238396052625491071866638693

    54766108455046198102084050635827676526589492393249

    51968595417167241932953068367349554400458635983816

    10430594498266275306054235807558941082788804278259

    51089880635410567917950974017780688782869810219010

    90014835206168888372025031066592206860148364983053

    27820882635365580436056867812841692171330471411763

    12175895777122637584753123517230990549829210134687

    30420589801441806387538266416989770423775940628087

    72537022654265305808623793014226758211871435029186

    37636340300173251818262076039747369595202642632364

    14544685111342720215045838385101013694131303485622

    19166316238926327658153550112763078250599691588245

    33457435437863683173730673296589355199694458236873

    50883027865770087974988999234355556624068283476378

    46851838449736488739524751032242221105612012958296

    57191368108693825475764118886879346725191246192151

    14473883626959164367249007165342822815266124780046

    39225449451703637236279407577845420910483054616561

    90622174286981602973324046520201992813854882681951

    00728286970107073750092766648750217477537274235150

    87482467202741700315811228058961781221607474379475

    10950620938556674581252518376682157712807861499255

    87613235295042234638787895485088576446613629039412

    76659780442020922813379871159008962648789424132104

    54925003566670632909441579372986743421470507213588

    93201958072306478149842952259558901275482397177332

    57229103257609297907332995450563883626404746502450

    80809469116072632087494143973000704111418595530278

    82735765481918200244969776111134631819528276159096

    41897909581173386272060889104329452449785351470141

    12442143055486089639578378347325323595763291438925

    28839398625627324286277556314046383038916842163311

    34456363095719659784663385514923161963356753551384

    03425804162919837822266909521770153175338730284610

    84188655413832917195133211789572854166208482368281

    79325129312375215419269702697032994776438233864830

    08871530373405666383868294088487730721762268849023

    08493466119426018027261380210800507821574100605484

    82013478595781027707077806555127725405016743323960

    66253216415004808772403047611929032210154385353138

    68553848642557079079534117651957118868373988068389

    57927437496834981429232921963097770901439368436553

    33359307820181312993455024206044563340578606962471

    96150560339489952332180043435996725662392719643540

    28720554750120798543319706747973131268135236537440

    85662263206768837585132782896252333284341812977624

    69707954343600349234315923967476363891211528540665

    77836462139112474470512552263427012395270181270454

    91648045932248108858674600952306793175967755581011

    67994000524980630376314134441226903703498735579991

    60092592480750524855415682662817608154463083054066

    77412630124441864204108373119093130001154470560277

    77372437806718889977085105672727678124719883285769

    58442175888951604678682048100100478164623582208385

    32488134270834079868486632162720208823308727819085

    37884546913155602172887312190739396520926022910147

    75270809308653649798585540105774502792898146036884

    31821508637246216967872282169347370599286277112447

    69092090298832016683017027342025976567170986331121

    63495021712644268271196502640542282317596308744753

    01847194095524263411498469508073390080000000000000

    00000000000000000000000000000000000000000000000000

    00000000000000000000000000000000000000000000000000

    00000000000000000000000000000000000000000000000000

    00000000000000000000000000000000000000000000000000

    00000000000000000000000000000000000000000000000000

    00000000000000000000000000000000000000000000000000

    00000000000000000000000000000000000000000000000000

    00000000000000000000000000000000000000000000000000

    00000000000000000000000000000000000000000000000000

    000000000000000000000000000000000000

    耗时: 1 秒 654 毫秒

    =======================================================
    =======================================================


    [此贴子已经被作者于2008-7-26 17:02:49编辑过]

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/8/10 13:09:00
     
     luheng 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:6
      积分:79
      门派:XML.ORG.CN
      注册:2006/8/7

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给luheng发送一个短消息 把luheng加入好友 查看luheng的个人资料 搜索luheng在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看luheng的博客9
    发贴心情 
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/8/11 15:40:00
     
     cpplab 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:63
      门派:XML.ORG.CN
      注册:2006/8/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给cpplab发送一个短消息 把cpplab加入好友 查看cpplab的个人资料 搜索cpplab在『 C/C++编程思想 』的所有贴子 引用回复这个贴子 回复这个贴子 查看cpplab的博客10
    发贴心情 
    代码不完整,使用了UpdateData就应该列出相关的update变量。
    程序没有动态考虑阶乘的最大值,纯粹使用阿婆算法。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/8/17 10:03:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/23 1:30:34

    本主题贴数11,分页: [1] [2]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    141.113ms