计算机二级:大整数阶乘问题的递推算法计算机二级考试

文章作者 100test 发表时间 2009:05:08 18:17:33
来源 100Test.Com百考试题网


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  /*
  标题:<.<.系统设计师>.>.应试编程实例-[递推算法程序设计]
  实现递推算法的大整数阶乘处理函数
  时间:2002年09月16日(18:38:00-20:02:00)
  实现“斐波那契数列”问题的递推算法函数
  */
  //:===========“大整数阶乘”问题的递推算法===========
  #define  MAXN 1000  //最大数据位数
  //用递推法求取整数k的阶乖,将结果放入数组array中
  void pnext(int array[],int k)
  {
  int *temp. //动态数组[临时存储运算大整数]
  int i,j,num_len = array[0],carry,t. //循环变量,长整数位数,进位标志,临时变量
  if(array[0] >.= MAXN)
  {
  printf("数据处理位数超过程序设计上限,程序将自动中断运行!\n").
  exit(1).
  }
  temp = (int *)malloc(sizeof(int) * (num_len 1)). //创建动态数组
  for(i=1.i<.=num_len.i )
  temp[i] = array[i].  //保存原始数据
  for(j=1.j  {
  for(carry = 0,i=1.i<.=num_len.i )
  {
  if(i <.= array[0])
  t = array[i] temp[i] carry.
  else
  t = array[i] carry. //处理最高位
  //数据位调整
  array[i] = t % 10.
  carry = t / 10.
  }
  if(carry)
  array[ num_len] = carry. //在最高位记录进位标志
  }
  free(temp).
  array[0] = num_len.
  }
  //显示阶乖结果
  void Show_Result(int array[],int base_number)
  {
  int i.
  printf("M!=",base_number).
  for(i=array[0].i>.0.i--)
  printf("%d",array[i]).
  printf("\n\n").
  }
  //计算数据的阶乘
  void Count_Result(int array[], int base_number)
  {
  int k.
  array[0] = 1.
  array[1] = 1.
  for(k=2.k<.=base_number.k )
  {
  pnext(array,k).
  Show_Result(array,k).
  }
  }
  //:==========“大整数阶乘”问题的递推算法=========

  特别推荐:

  2009年9月全国计算机等级考试时间及科目预告

  2009年上半年全国计算机等级考试参考答案请进入计算机考试论坛

  2009年全国计算机等级考试报名信息汇总

  2009年NCRE考试有新变化

  2009年全国计算机等级考试-大纲

  2009年上半年全国计算机二级考试试题及答案

  2009年上半年全国计算机等级考试试题答案汇总



相关文章


计算机二级C 辅导:顺序队列基本操作计算机二级考试
计算机二级:大整数阶乘问题的递推算法计算机二级考试
计算机二级:scanf和gets获取字符串时的区别计算机二级考试
高精度实现10000位数字的乘除法(C )计算机二级考试
C 中string和string.h的作用和区别计算机二级考试
计算机二级:C 中什么是内联函数计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛