2017年计算机二级office操作题_2017年计算机二级C++辅导实例编程(9)

副标题:2017年计算机二级C++辅导实例编程(9)

时间:2023-11-04 08:43:01 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


  大整数阶乘问题的递推算法

  //:===========“大整数阶乘”问题的递推算法===========

  #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);

  }

  }

  //:==========“大整数阶乘”问题的递推算法=========

2017年计算机二级C++辅导实例编程(9).doc

本文来源:https://www.wddqw.com/WboO.html

微信扫码分享

下载全文
搜索大全
下载文档