2009年上半年软考程序员下午试卷[2]

程序员 责任编辑:heheheh 2009-05-24

添加老师微信

备考咨询

加我微信

摘要:试题二(共15分)【说明】C语言常用整型(int)或长整型(long)来说明需要处理的整数,在一般情况下可以满足表示及运算要求,而在某些情况下,需要表示及运算的整数比较大,即使采用更长的整型(例如,longlong类型,某些C系统会提供)也无法正确表示,此时可用一维数组来表示一个整数。假设下面要处理的大整数均为正数,将其从低位到高

  试题二(共15分)
  【说明】
  C 语言常用整型(int)或长整型(long)来说明需要处理的整数,在一般情况下可以满足表示及运算要求,而在某些情况下,需要表示及运算的整数比较大,即使采用更长的整型(例如,long long类型,某些C系统会提供)也无法正确表示,此时可用一维数组来表示一个整数。
  假设下面要处理的大整数均为正数,将其从低位到高位每4位一组进行分组(最后一组可能不足4位),每组作为1个整数存入数组。例如,大整数2543698845679015847在数组A 中的表示如下(特别引入-1表示分组结束):

  在上述表示机制下,函数add_large_number(A,B,C)将保存在一维整型数组A和B中的两个大整数进行相加,结果(和数)保存在一维整型数组C 中。
  【C 函数】
  void add_large_number(int A[], int B[], int C[])
  {
  int i, cf ;  /*cf存放进位*/
  int t, *p;  /*t为临时变量,p为临时指针*/
  cf = (1)  ;
  for(i = 0; A[i]>-1 && B[i]>-1; i++) {
  /*将数组A、B 对应分组中的两个整数进行相加*/
  t = (2)  ;
  C[i] = t % 10000;
  cf = (3)  ;
  }
  if ( (4)  )  p = B;
  else  p = A;
  for( ; p[i]>-1; i++) {  /*将分组多的其余各组整数带进位复制入数组C*/
  C[i] = (p[i] + cf) %10000;  cf = (p[i] + cf) /10000;
  }
  if ( cf > 0 )  C[i++] = cf;
  (5)  = -1;  /*标志"和数"的分组结束*/
  }
[答案讨论]

 

[1]  [2]  [3]  [4]  [5]  

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取