朋友考我的一道题,冒似是哪个公司的笔试?面试题吧。
不知道这样回答能得几分?应该没啥问题吧。
不过,自我感觉,使用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);
}