關於乘法運算的計算過程

 朋友考我的一道題,冒似是哪個公司的筆試?面試題吧。

不知道這樣回答能得幾分?應該沒啥問題吧。

不過,自我感覺,使用vector確實有點浪費,打印的過程有點笨。

其它好的方法暫時沒想到。如果你知道的話,給點意見,指導一下哈。呵呵~

#include <iostream>
#include <string>
#include <vector>
using namespace std;

//256*256的計算過程
void main()
{
 int num1, num2;
 cout<<"請輸入被乘數:";
 cin>>num1;
 cout<<"請輸入乘數:";
 cin>>num2;
 cout<<"計算過程如下所示:"<<endl;
 int count = 100;
 int sum = 0;
 printf("%7d\n", num1);
 printf("*%6d\n", num2);
 cout<<"------------------"<<endl;
 if(num1 == 0 || num2 == 0)
 {
  printf("%7d\n", sum);
  return;
 }
 if(num1 > 256 || num2 >256 || num1 < 0 || num2 <0)
 {
  cout<<"請輸入0~256之間的整數!"<<endl;
  return;
 }
 vector<int> vec;
 for(int i = 100; i>=1; i=i/10)
 {
  count = num2/i;
  if( count != 0 )
  {
   vec.push_back(count*num1);
  }

  num2 = num2 - count*i;
 }
 

 vector<int>::reverse_iterator iter;
 int n = 1;
 int vecSize = vec.size();
 for(iter = vec.rbegin(); iter != vec.rend(); ++iter)
 {
  if(n == 1 )
  {
   printf("%7d\n", *iter);
   if( vecSize == 1 )
   {
    return;
   }
  }
  else if(n == 10)
  {
   if(vecSize == 2)
   {
    printf("+%5.1d\n", *iter);
   }
   else
   {
    printf("%6.1d\n", *iter);
   }
  }
  else
  {
   printf("+%4.2d\n", *iter);
  }
  sum += *iter *n;
  n *= 10;
 }
 cout<<"------------------"<<endl;
 printf("%7d\n", sum);
 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章