事前刚运动完 想着不去了 不过想着多去增加些经验,还是去了,2小时机试还是挺快,我只做了第一道题目,第二道是停车管理系统,第三道是逆波兰操作符转换
第一题:从一个整数序列中删除满足特定条件的元素
条件:这里写代码片
1、被7整除
2、个位、十位、百位、千位都为7的数
3、数组长度<100,数组元素大小>0&& <10000;
要求输入元素之间用逗号隔开
第一种思路:把符合特定条件的元素,不输出
#include<iostream>
#include<vector>
using namespace std;
bool Delete(int);
int main(){
vector<int> tmp;
vector<int>::iterator piter;
int x;
cout<<"Please enter an array of int seperated with comma:";
while(cin)
{
char temp;
cin>>x;
if(x>0 && x<10000)
tmp.push_back(x);
temp = cin.get();
if(temp == '\n')
break;
}//这段代码能很好的实现输入数组元素用逗号隔开,原来cin还有一些方法也,果然需要多写这样的题目,才记忆深刻!!!
if(tmp.size() <=100){
for(piter = tmp.begin(); piter != tmp.end(); piter++){
if(!Delete(*piter)){
cout<<*piter<<' ';
cout<<endl;
}
}
}
return 0;
}
bool Delete(int tmp)
{
if(!(tmp%7))
return true;;
if(tmp/1000 == 7)
return true;
if((tmp%1000)/100 == 7)
return true;
if((tmp%100)/10 == 7)
return true;
if((tmp%10) == 7)
return true;
return false;
}
第二种思路:把符合条件的元素删除
#include<iostream>
#include<vector>
using namespace std;
int main(void){
vector<int> a;
vector<int>::iterator ix;
int x;
cout<<"Please enter an array of int seperated with comma:";
while(cin){
char temp;
cin>>x;
if(x>0 && x<10000){
a.push_back(x);
}
temp=cin.get();
if(temp == '\n')
break;
}
if(a.size() <= 100 ){
for(ix=a.begin();ix!=a.end();){
if((*ix %7)==0)
ix=a.erase(ix);
else if((((*ix %1000)%100)%10) == 7)
ix=a.erase(ix);
else
ix++;
if(ix == a.end())
break;
}
}
for(ix=a.begin();ix!=a.end();ix++)
cout<<*ix<<endl;
return 0;
}