1. 程式人生 > >華為機試(2018年5月3日)

華為機試(2018年5月3日)

第一題 :

                               

C++程式:

#include<iostream>
#include<string>
using namespace std;
void main()
{
	string str,s;
	int flag[]={0,0,0,0,0,0,0,0,0,0};
	while(cin>>str)
	{   
		memset(flag,sizeof(flag),0);
		for(int i=0;i<str.size();i++)
		{
			if(flag[str[i]-'0']==0)
			{
				s=str[i]+s;
				flag[str[i]-'0']=1;
			}
		}
		int flag=1;
		for(int i=0;i<s.size();i++)
		{
			if(flag&&s[i]=='0')
				continue;
			else
			{
				flag=0;
				cout<<s[i];
			}
		}
		cout<<endl;
	}
}

第二題 :    

            

題目錯了,在剩餘25分鐘左右又改正回來了,雖然比較坑,但這也間接考察了我們的臨場應變能力。

心得:1)不論題目是否正確,應該先把框架寫出來。

          2)相信自己,不要慌

#include<iostream>
#include<string>
using namespace std;
void main()
{
	int temp=0;
	int output=0;
	while(cin>>temp)
	{
		if(temp<-40)
			temp=-40;
		if(temp>100)
			temp=100;
		if(temp>=-40&&temp<0)
	    { 
			output=34/3*(temp+150)-1000;
			cout<<output<<endl;
			//break;
		}
		if(temp>=0&&temp<40)
	    { 
			output=6*temp+700;
			cout<<output<<endl;
			//break;
		}
		if(temp>=40&&temp<300)
	    { 
			output=6*(temp-40)+940;
			cout<<output<<endl;
			//break;
		}
		if(temp>=300&&temp<=550)
	    { 
			output=20*(temp-300)+2500;
			cout<<output<<endl;
			//break;
		}
	}
}

第三題 :

         

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

struct Data
{   
	string section;
	string key;
	string value;
}data;
string find_section(string str)
{
	if(str[0]!=';')
	{   
		int k=str.find_first_of(';',0);
		str=str.substr(0,k);

		int i=str.find_first_of('[',0);
		int j=str.find_first_of(']',i);
		string section=str.substr(i+1,j-i+1-2);
		return section;
	}
	else
		return "error";
}
Data find_key_value(string str)
{
	int i=str.find_first_of('=',0);
	string key1=str.substr(0,i);
	string value1=str.substr(i+1,str.size()-i+1);
	string key2,value2;
	for(int i=0;i<key1.size();i++)
	{
		if(key1[i]!=' ')
			key2=key2+key1[i];
	}
	for(int i=0;i<value1.size();i++)
	{
		if(value1[i]!=' ')
			value2=value2+value1[i];
	}
	Data data;
	data.key=key2;
	data.value=value2;
	return data;
}

bool compare(Data a,Data b)
{
	if(a.section!=b.section)
		return a.section<b.section;
	else
	    return a.key<b.key;
}
void main()
{   
	vector<Data> s;
	Data data;
	string section;
	string str;
	int i=1;
	while(getline(cin,str))
	{   
		i++;
	    section=find_section(str);
	    while(section=="error")
		{
			getline(cin,str);
			section=find_section(str);
		}
		getline(cin,str);
		data=find_key_value(str);
		data.section=section;
		s.push_back(data);
		//if(i>2)  
		//	break;
	}

	sort(s.begin(),s.end(),compare);
	for(vector<Data>:: iterator it=s.begin();it!=s.end();it++)
	{
		cout<<'{';
		cout<<(*it).section;
		cout<<'}';
		cout<<'{';
		cout<<(*it).key;
		cout<<'}';
		cout<<'{';
		cout<<(*it).value;
		cout<<'}';
		cout<<endl;
	} 
	cout<<'end';
}