朋友考我的一道題,冒似是哪個公司的筆試?面試題吧。
不知道這樣回答能得幾分?應該沒啥問題吧。
不過,自我感覺,使用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);
}