2011年计算机二级C++实例编程辅导10_第3页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2011年11月10日

  {

  // 没有对应位则需要添加

  rest.push_back(carry);

  }

  }

  }

  // 上述计算之后,会出现有些位的数字超过了10,那是因为在处理每一位运算结果之后

  // 相加时地位向高位可能存在进位,上面没有考虑,所以需要进行调整

  for(i = 0;i < rest.size();++i)

  {

  if(rest[i] > 9)

  {

  if((i+1) != rest.size())

  {

  // 高位存在,则直接更新高位

  rest[i+1] += rest[i] / 10;

  rest[i] = rest[i] % 10;

  }

  else

  {

  // 高位不存在,则需要插入

  rest.push_back(rest[i] / 10);

  rest[i] = rest[i] % 10;

  }

  }

  }

  // 将计算结果存储到原来的容器中

  calcresult.clear();

  for(i = 0;i < rest.size();++i)

  {

  calcresult.push_back(rest[i]);

  }

  }

  int main()

  {

  int num = 0;

  vector calcresult;

  // 将初值1赋进去

  calcresult.push_back(1);

  // 获取欲求阶乘的整数

  cout<<"输入欲求阶乘的整数:"<

  cin>>num;

  for(int i = 0;i < num;++i)

  {

  Calc(i+1,calcresult);

  }

  // 输出计算结果

  cout<

  for(unsigned int i = calcresult.size();i > 0 ;--i)

  {

  cout<

  }

  cout<

  return 0;

  }


首页 1 2 3 尾页

相关文章