c++ primer 9章一些习题

9.26

int main()
{
	int ia[]={0,1,2,3,4,5,8,13,21,55,89};
	list<int> l(ia,ia+11);
	vector<int> d(ia,ia+11);
	list<int>::iterator iter1=l.begin();
	vector<int>::iterator iter2=d.begin();
	
	while(iter1!=l.end()){
		if(*iter1%2!=0) l.erase(iter1);
		else {
			cout<<*iter1<<" ";
			*iter1++;
		};
	}
	while(iter2!=d.end()){
		if(*iter2%2==0) d.erase(iter2);
		else {
			cout<<*iter2<<" ";
			*iter2++;
		};
	}
	system("pause");
	return 0;
}

9.27

int main()
{
	string s1("size");
	string s2("swap");
	string a[]={"pop_back","pop_front","size","resize","rebegin"};
	list<string> it(a,a+5);
	deque<string> d(a,a+5);
	list<string>::iterator iter=it.begin();
	deque<string>::iterator iter1=d.begin();
	while(iter!=it.end()){
		if(*iter==s1) it.erase(iter);
		else iter++;
	}
	while(iter1!=d.end()){
		if(*iter1==s2) d.erase(iter1);
		else iter1++;
	}
	system("pause");
	return 0;
}
9.34

int main()
{
	string s("Hiya!");
	string::iterator iter=s.begin();
	while(iter!=s.end()){
		*iter=toupper(*iter);
		cout<<*iter;
		iter++;
	}
	system("pause");
	return 0;
}

9.35

int main()
{
	string s("Hiya!");
	string::iterator iter=s.begin();
	while(iter!=s.end()){
		if(isupper(*iter)) {
			s.erase(iter);
			--iter;
		}
		iter++;
	}
	system("pause");
	return 0;
}

9.36

int main()
{
	vector<char> v(10,'c');
	string s;
	s.assign(v.begin(),v.end());
	cout<<s;
	system("pause");
	return 0;
}

9.38

int main()
{
	string s("ab2c3d7R4E6");
	string s1("23476");
	string s2("abcdER");
	string::size_type pos=0;
	while((pos=s.find_first_of(s1,pos))!=string::npos){
		cout<<"found menber at index"<<pos<<endl;
		cout<<"element is:"<<s[pos]<<endl;
		pos++;
	}
	system("pause");
	return 0;
}
用find_first_not_of函数输出所有字母。

int main()
{
	string s("ab2c3d7R4E6");
	string s1("23476");
	string::size_type pos=0;
	while((pos=s.find_first_not_of(s1,pos))!=string::npos){
		cout<<"found menber not be contained by s1 at index"<<pos<<endl;
		cout<<"element is:"<<s[pos]<<endl;
		pos++;
	}
	system("pause");
	return 0;
}


9.40

int main()
{
	string q1("When lilacs last in the dooryard bloom'd");
	string q2("The child is father of the man");
	string sentence;
	sentence.assign(q2.begin(),q2.begin()+12);
	sentence.append(q1.begin()+17,q1.end()-8);
	cout<<sentence<<endl;
	system("pause");
	return 0;
}

9.41

string greet(string form, string lastname, string title, string::size_type pos, int length){
	form.replace(8,5,lastname);
	form.replace(5,2,title,pos,length);
	return form;
}
int main()
{
	string s1("Dear Ms Daisy:");
	string s2("MrsMsMissPepole");
	string lastname("Annap");
	string s=greet(s1,lastname,s2,5,4);
	cout<<s<<endl;
	system("pause");
	return 0;
}

9.42

int main()
{
	std::stack<string> stk;
	string s;
	cout<<"Enter words and enter (ctr+s) to exit"<<endl;
	while(cin>>s)
		stk.push(s);
	system("pause");
	return 0;
}

9.43

int main()
{
	stack<char> stk;
	string s;
	cout<<"Enter the expression:"<<endl;
	cin>>s;
	string::iterator iter=s.begin();
	while(iter!=s.end()){
		if(*iter!=')') stk.push(*iter);//保存‘)’之前的表达式
		else {
			while(stk.top()!='('&&stk.empty()){//找到最前面的‘(’
				stk.pop();
			}
			if(stk.empty()) cout<<"patentheses are not matched"<<endl;
			else{
				stk.pop();
				stk.push('@');//用@代替‘(’
			}
		}
	}
	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值