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

remain26岁_剩

remain26岁_剩

2016-02-19 14:04

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

  这个程序写得比较乱,没好好整理.因为数字大于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();
  }
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
求n!的程序(n=1&&n=1000)

新锐摄影的N+1种可能和N-1种身份

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
新锐摄影的N+1种可能和N-1种身份

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

求N阶行列式的值

编程语言 网络编程
求N阶行列式的值

TOP N 和SET ROWCOUNT N 哪个更快?

SQLServer
TOP N 和SET ROWCOUNT N 哪个更快?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

TOP N 和SET ROWCOUNT N 哪个更快

SQLServer
TOP N 和SET ROWCOUNT N 哪个更快

JS实例教程:用6N±1法求素数

Web开发
JS实例教程:用6N±1法求素数

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

7.5 通过表单创建word的一个例子

7.5 通过表单创建word的一个例子

设置PowerPoint2003幻灯片的切换

设置PowerPoint2003幻灯片的切换
下拉加载更多内容 ↓