c++ primer第五章练习题总结

  1. 5.21
 /*输入单词,直到前后输入了两个相同的单词为止,找到的单词必须以大写开头*/
#include<iostream>
#include<string>
using namespace std;
int main()
{
string buf,bref;
while(cin>>buf&&!buf.empty())
{  
    if(!isupper(buf[0]))
     continue;
    if(buf==bref)
    {
    cout<<buf<<"\t"<<"occurs twice in succession"<<endl;
    break;
    }
    bref=buf;

}
if(cin.eof())
    cout<<"no"<<endl;
return 0;

}

2.5.6.3关于异常
这段程序写的时候是参考书上的程序,自己写还写不出来

 /*编写一段程序,从标准输入读取两个整数,输出第一个数除以第二个数的结果,修改程序用try捕获异常,
catch子句应该为用户输出一条提示信息,询问是否输入新数并且重新执行try语句块的内容*/
#include<iostream>
using namespace std;
int main()
{ 
    int i1,i2;
    while(cin>>i1>>i2)
    {
   try{ 

       if(i2==0)
       throw runtime_error("data can not be 0");
     //不用else,因为只要没有执行if就执行这句,执行if函数终止
           cout<<static_cast<double>(i1/i2)<<endl;//输出转换成double型


    }catch(runtime_error err)
   {
       cout<< err.what()
           <<"\nTry again? yes or no"<<endl;
        char c;
       cin>>c;
       if(!cin||c=='n')
           break;//cin这种用法还不太明白
   }

    }
    return 0;
}

3.5.4.2

 /*假设有两个包含整数的vecor对象,编写一段程序,检验其中一个vector对象是否是另一个的前缀
,对于两个不等长的vector对象,挑出比较短的那个,把它的所有元素和另一个vector对象比较。
*/
#include<iostream>
#include<vector>
using namespace std;
int main()
{
   int iv1,iv2;
    vector<int> ivec1;
    vector<int> ivec2;
    cout<<"enter the first!"<<endl;
    while(cin>>iv1)
        ivec1.push_back(iv1);
    cout<<"enter the second"<<endl;
    cin.clear();//否则将跳过第二个while
    while(cin>>iv2)
        ivec2.push_back(iv2);
    if(ivec1.size()!=ivec2.size())
    {  
        int tag=0;//设置的这个标签必须要初始化为0,否则在进行是前缀测试的时候不能运行,定义于函数体内的为初始化的内置类型将为未定义,引发错误,因此内置类型必须初始化;
        for(auto p1=ivec1.begin(),p2=ivec2.begin();p1!=ivec1.end()&&p2!=ivec2.end();++p1,++p2)
            if(*p1!=*p2)
            {
            tag=1;
            cout<<"is not"<<endl;
            break;
            }
            if(tag==0)
          cout<<"is qianzhui"<<endl;
    }
    else
        cout<<"is not"<<endl;
    return 0;

}

“`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值