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

2016-02-19 14:04 4 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();
  }

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

延伸阅读
标签: 智能手机
玩转镜头 诞生不久的OPPO N1 mini让爱自拍的童鞋们享受翻转摄像头乐趣的同时,还继承了今年发布不久的OPPO Find 7的不少闪光点;除了硬件上的全新积层式传感器之外,超级变焦、32秒超长慢门的加入也进一步扩展了翻转镜头的玩法。其中更是引入了OPPO Find 7的“黑科技”之一的超清画质模式,像素数从Find 7的5000万调整到2400万,一起...
标签: 生活常识
在我国股市中,当股票名称前出现了N字,表示这只股是当日新上市的股票,字母N是英语New(新)的缩写。看到带有N字头的股票时,投资者除了知道它是新股,还应认识到这只股票的股价当日在市场上是不受涨跌幅限制的,涨幅可以高于10%,跌幅也可低于10%。 n股是什么意思?n股和a股的区别 什么是N股? N股,是指那些在美国纽约...
在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为返回的记录条数。...
标签: 智能手机
身材缩水美颜不缩水 购买一款智能手机时,男生看性能,女生看拍照。对于男性用户来说,他们或许需要一款拥有强劲性能与顶级硬件的产品来满足他们的游戏需求,但妹子们却更需要一款能够把自己拍的足够美的手机,在朋友圈和闺蜜们互相晒自拍。2013年9月,OPPO N1作为全球首款旋转摄像头手机诞生,将国产手机的自拍战役推上了一个新的高度。你不用...
标签: MySQL mysql数据库
  在 MySQL 中,如何实现 Top N 及 M 至 N 段的记录查询?   我们可以利用MySQL中SELECT支持的一个子句——LIMIT——来完成这项功能。 LIMIT可以实现top N查询,也可以实现 M 至 N ( 某一段)的记录查询,具体语法如下: