華為2018年7月實習生招聘程式設計題目三解答

華為2018年7月實習生招聘程式設計題目三解答

1.題目描述:

2.程式碼如下:

#include <sstream>
#include <conio.h>
#include <vector>
#include <iosfwd>
#include <iostream>
using namespace std;
int CalCount(vector<string> str,int &len)
{
int Firstbyte = 0;
int Secondbyte = 0;
if (str.size()==2)//有符號的情況
{
if (str[0] == "char")
{
Firstbyte = 1;
}
if (str[0] == "short")
{
Firstbyte = 2;
}
if (str[0] == "int" || str[0] == "long")
{
Firstbyte = 4;
}
string a = str[1];
if (a[0]=='*')
{
len = 4;
}
else
{
string number = a.substr(a.find("[")   1, a.find("]") - a.find("[") - 1);//找到中括號裡的數字(字串形式)
//將字串形式的數字轉換為int型
stringstream stream(number);
stream >> Secondbyte; 
len = Firstbyte*Secondbyte; //計算所佔用的位元組數
}
}
if (str.size() == 3)//無符號的情況
{
if (str[0]=="unsigned")
{
if (str[1] == "char")
{
Firstbyte = 1;
}
if (str[1] == "short")
{
Firstbyte = 2;
}
if (str[1] == "int" || str[1] == "long")
{
Firstbyte = 4;
}
string a = str[2];
if (a[0] == '*')
{
len = 4;
}
else
{
string number = a.substr(a.find("[")   1, a.find("]") - a.find("[") - 1);
stringstream stream(number);
stream >> Secondbyte;
len = Firstbyte*Secondbyte;
}
}
}
return 0;
}
int main()
{
char str[100];	
int length = 0;
while (1)
{
cin.getline(str, 100);//從使用者輸入獲得字串陣列
string word(str);//將字串陣列轉換為字串
vector<string> res;//存放分割後的字元
string result;//暫時存放從word中讀取的字串
stringstream input(word);//將string型別的word複製給input
while (input >> result) //在stringstream類中構造字串流時,空格會成為字串引數的內部分界
{
res.push_back(result);
}
CalCount(res, length);
cout << length << endl;
length = 0;
if ( _getch() == 27)
{
break;
}
}
return 0;
}