高精度实现10000位数字的乘除法(C )计算机二级考试

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


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  说明:做了个计算器,本来是要上传整个项目的,但突然发现不能上传资源了,就贴出来算法部分的代码,大家多多指点啊,呵呵,比较难读,以后再上传整个项目。
  //转换,供乘法部分调用
  int turn(char s[], int num[])
  {
  int i = 0, len, j.
  while(1)
  {
  if(s[i] == 0) break.
  else if(s[i] == - || s[i] == 0) i .
  else break.
  }            //i指向第一个非零数字
  for (j = 0. s[j] != 0. j ) .
  j--.          //j指向最后数字
  for(len = 0. j >.= i. j--, len )
  {
  num[len] = (int)s[j] - 48.
  }
  return(len).
  }
  //转换,供除法部分调用
  int turn2(char s[], int num[])
  {
  int i = 0, len, j.
  while(1)
  {
  if(s[i] == 0) break.
  else if(s[i] == - || s[i] == 0) i .
  else break.
  }            //i指向第一个非零数字
  for (j = 0. s[j] != 0. j ) .
  j--.          //j指向最后数字
  for(len = 0. j >.= i. i , len )
  {
  num[len] = (int)s[i] - 48.
  }
  return(len).
  }
  void mul(int *a, int *b, int *c, int len1, int len2)
  {
  int i, j.
  for (i = 0. i <. len1. i )
  {
  for (j = 0. j <. len2. j )
  {
  c[i j] = a[i] * b[j].
  if (c[i j] >.= 10)
  {
  c[i j 1] = c[i j] / 10.
  c[i j] = c[i j] % 10.
  }
  }
  }
  }
  //比较大小,被Division函数调用
  int cmp(int *a, int *b, int len1, int len2)
  {
  int i, len, result = 0, j.
  for (i = 0. a[i] == 0. i ).
  len = len1 - i.
  if(len <. len2) result = -1.
  else if(len >. len2) result = 1.
  else
  {
  for (j = 0. i <. len1, j <. len2. i , j )
  {
  if (a[i] >. b[j])
  {
  result = 1.
  break.
  }
  if (a[i] <. b[j])
  {
  result = -1.
  break.
  }
  }
  }
  return(result).
  }

相关文章


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