求n!的程序(n=1&&n=1000)

2016-02-19 14:04 0 1 收藏

下面这个求n!的程序(n=1&&n=1000)教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

【 tulaoshi.com - 编程语言 】


  这个程序写得比较乱,没好好整理.因为数字大于700的话就要超出屏幕了,所以就用科学表示方法了,其实程序有点浪费空间的,有些地方还可以改进的.
  /*跳蚤侦察2003.9.26*/
  #define N 3000
  void pr1(int *num)/*科学方式输出阶层*/
  {
   int i,j;
   for(i=0;;i++)
    if(num[i]!=0)
     {
      printf("%d",num[i]);
      printf(".");
      for(j=i+1;j=i+11;j++)
      printf("%d",num[j]);
      printf("e+");
      printf("%d",N-i-1);
      break;
     }
  }
  void pr(int *num)/*输入结果*/
  {int i,j;
   for(i=0;;i++)
    if(num[i]!=0)
     {
     for(j=i;jN;j++)
      printf("%d",num[j]);
     break;
     }
   printf("");
  }
  fun(int num[],int numx[],int x,int y)/*相乘结果函数*/
  {int t[N],i,j,k,tt[N]={0};/*tt数组用来存放竖式的每一行*/
   for(i=0;iN;i++)/*用来反复乘第一行*/
    {t[i]=num[i];num[i]=0;}
   for(i=3;i=3-y;i--)/*1位到3位的乘法*/
    {
     for(j=N-1;j=N-x;j--)
      tt[j+i-3]=numx[i]*t[j];/*记录数式*/
     for(j=N-1;j=1;j--)/*这里其实可以用个变量来算每一行到第几位,这样可以节约时间*/
    if(tt[j]=10)
     {
      tt[j-1]+=tt[j]/10;
      tt[j]=tt[j]%10;
     }
     for(j=0;jN;j++)/*竖式相加得出最后乘出来的结果*/ 
     {num[j]+=tt[j];tt[j]=0;}
    }
   for(i=N-1;i=N-x;i--)/*结果进位*/
    if(num[i]=10)
     {
      num[i-1]+=num[i]/10;
      num[i]=num[i]%10;
     }
  }
   main()
  {int num[N]={0},numx[4]={0},i,x,y;
   int jx,jy=0;
   clrscr();
   printf("please input n: ");
   scanf("%d",&jx);
   num[N-1]=1;/*一直用来乘的变量初始值*/
   while(1)
   {
   jy++;
   numx[3]++;
   if(numx[3]==10)
   {numx[3]=0;numx[2]++;}
   if(numx[2]==10)/*个位数进位*/
   {numx[2]=0;numx[1]++;}
   if(numx[1]==10)/*十位数进位*/
   {numx[1]=0;numx[0]++;}
   for(i=0;iN;i++)
    if(num[i]!=0)
     break;
   x=N-i;/*求结果的位数*/
   for(i=0;i4;i++)
    if(numx[i]!=0)
     break;
   y=4-i;/*求阶层的位数*/
   fun(num,numx,x,y);/*传递过去的两个数,x是结果的位数,y是阶层的位数*/
   if(jy==jx)/*阶层大小的判定*/
    break;
   }
   printf("%d!=",jx);/*输出结果*/
   if(jx=700)
   pr(num);
   else
   pr1(num);
   getch();
  }

来源:https://www.tulaoshi.com/n/20160219/1606092.html

延伸阅读
标签: PS PS教程
本教程为 www.jcwcn.com 中国 a87818089、楚楚原创,如转载请保留这段话: screen.width-500)this.style.width=screen.width-500;" border=0 pop="按此在新窗口浏览图片"> screen.width-500)this.style.width=screen.width-500;" border=0 pop="按此在新窗口浏览图片"> 一图层样式 1.美女图复制一张, screen.width-500)this.style.wid...
甲型H1N1流感的病因 1.传染源 甲型H1N1流感病人为主要传染源,无症状感染者也具有传染性。目前尚无动物传染人类的证据。 2.传播途径 主要通过飞沫经呼吸道传播,也可通过口腔、鼻腔、眼睛等处黏膜直接或间接接触传播。接触患者的呼吸道分泌物、体液和被病毒污染的物品亦可能引起感染。通过气溶胶经呼吸道传播有待进一步确证。 3.易感人群 ...
标签: 智能手机
身材缩水美颜不缩水 购买一款智能手机时,男生看性能,女生看拍照。对于男性用户来说,他们或许需要一款拥有强劲性能与顶级硬件的产品来满足他们的游戏需求,但妹子们却更需要一款能够把自己拍的足够美的手机,在朋友圈和闺蜜们互相晒自拍。2013年9月,OPPO N1作为全球首款旋转摄像头手机诞生,将国产手机的自拍战役推上了一个新的高度。你不用...
标签: 苦瓜
苦瓜煎蛋怎么做好吃 夏天吃蛋有养心安神之功效,叫做补夏。因此苦瓜和鸡蛋是夏季清心健脾的绝佳组合,相比较炒鸡蛋需要很多的油,我更喜欢苦瓜煎蛋。 很多同学怕苦瓜的苦味,分享两个小窍门让您做出喷香不苦的苦瓜煎蛋。第一个办法是腌制,切片苦瓜用盐腌制20分钟,然后将腌出来的水倒掉。第二个办法是焯水,水中放数滴油和一勺糖...
在MySQL中,如何实现Top N及M至N段的记录查询?  我们可以利用MySQL中SELECT支持的一个子句——LIMIT——来完成这项功能。 LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下: SELECT * FROM MYTABLE ORDER BY AFIELD LIMIT offset, recnum 其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数。...

经验教程

78

收藏

69
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部