华为机试(2018年5月3日)

2019-07-14 00:24发布

第一题 :

                                C++程序:
#include #include 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 

第二题 :    

             题目错了,在剩余25分钟左右又改正回来了,虽然比较坑,但这也间接考察了我们的临场应变能力。心得:1)不论题目是否正确,应该先把框架写出来。          2)相信自己,不要慌
#include #include 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<=0&&temp<40) { output=6*temp+700; cout<=40&&temp<300) { output=6*(temp-40)+940; cout<=300&&temp<=550) { output=20*(temp-300)+2500; cout<

第三题 :

          #include #include #include #include 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 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:: iterator it=s.begin();it!=s.end();it++) { cout<<'{'; cout<<(*it).section; cout<<'}'; cout<<'{'; cout<<(*it).key; cout<<'}'; cout<<'{'; cout<<(*it).value; cout<<'}'; cout<