BIT2010上机第一题

来源:互联网 发布:forespider爬虫软件 编辑:程序博客网 时间:2024/06/09 03:38

题目要求


1、输入一串整数,输入指令。

要求:(1)输入a t,在这串整数后添加整数t。(2)输入c\m\n,用n替换m。(3)输入d t,删除t。(4)输入s排序。


解题思路

这道题的思路很简单的,只要顺着操作就可以了。


注意的点:

删除和替换都是需要将所有符合要求的元素删除和替换,需要多多测试

如果不加上getchar();这条语句,那么就会陷入死循环


学习的点:

vector 删除多个元素的方法

vector替换函数

getchar() getch()函数的使用方法,这个还需要多次总结,现在还有些模糊


代码如下:

#include<iostream>#include<vector>#include<algorithm>using namespace std;void display(vector<int> v){vector<int>::iterator it;cout<<"输出数据:";for(it=v.begin();it!=v.end();it++){cout<<*it<<" ";}cout<<endl;}int main(){vector<int> v;vector<int>::iterator it;int a;cout<<"请输入数据,以0结束:"<<endl;while(cin>>a){if(a==0)break;v.push_back(a);}display(v);char op;while(true){cout<<"请输入命令,以e结束:";cin>>op; getchar();  //只读取一个字符 ,这句话还挺重要的,学习了,我刚测试了一下,如果是没有这句话,输入aa,这回陷入死循环中if(op=='a'){cin>>a;v.push_back(a);display(v);}if(op=='c'){char ca,cb;int ia,ib;cin>>ca>>ia>>cb>>ib;/*int f=0;for(it=v.begin();it!=v.end();it++){if((*it)==ia){(*it)=ib;f = 1;}}if(f==1){cout<<"替换成功"<<endl;}else{cout<<"没有找到匹配数据"<<endl;}*/replace(v.begin(),v.end(),ia,ib); //原来vector本身已经有这个函数了display(v);}if(op=='d'){cin>>a;for(it=v.begin();it!=v.end();){if((*it)==a){it = v.erase(it);//会返回删除元素的下一个元素的迭代器}else{it++;}} //删除1/*//修改之后的代码for(int i=0;i<v.size();i++){if(v[i]==a){it = v.begin()+i;v.erase(it);}}删除2*/ //删除的两段代码都是可以的display(v);}if(op=='s'){cout<<"按照递增顺序"<<endl;sort(v.begin(),v.end());display(v);cout<<"按照递减顺序"<<endl;reverse(v.begin(),v.end());display(v);}if(op=='e')break;}return 0;}


0 0