C++Primer 中文版 第五版 第三章课后习题答案

来源:互联网 发布:怎么注册手机淘宝账号 编辑:程序博客网 时间:2024/04/30 08:11

前言:自己做的,如果有错误,要提出来哟...


//3.1

//3.2

/*

#include<iostream>

using namespace std;

int main()

{

  string line;

  getline(cin,line);

  cout<<line<<endl;

}

 

#include<iostream>

using namespace std;

int main()

{

  string line;

  while(cin>>line)

  cout<<line<<endl;

}

*/

 

//3.3

/*

输入运算符:不放入

getline:把那个放入

*/

//3.4

/*

#include<iostream>

using namespace std;

int main()

{

  string line1;

  string line2;

  cin>>line1>>line2;

  if(line1>line2)

   cout<<line1;

  else

   cout<<line2;

}

#include<iostream>

using namespace std;

int main()

{

  string line1;

  string line2;

  cin>>line1>>line2;

  if(line1!=line2)

   {

    if(line1>line2)

   cout<<line1;

  else

   cout<<line2;

   }

}

*/

 

//3.5

/*

#include<iostream>

#include<string>

using namespace std;

int main()

{

  string line1;

  string line2;

  while(cin>>line1)

   {

      line2+=line1;

   }

  cout<<line2<<endl;

}

*/

 

//3.6

/*

#include<iostream>

using namespace std;

int main()

{

 string line;

 cin>>line;

 for(auto &c:line)

  {

     c='X';

 

  }

 cout<<line<<endl;

}

*/

 

//3.7

/*

不是c++11...不能调试,大家自己试试就可以了

*/

 

//3.8

 

/*

个人认为是while,因为我们不清楚需要循环几次

*/

 

//3.9

/*

合法,输出\0

#include<iostream>

using namespace std;

int main()

{

   string s;

   cout<<s[0]<<endl;

}

*/

//3.10

/*

#include<iostream>

#include<cctype>

using namespace std;

int main()

{

 string line;

 cin>>line;

 for(auto c:line)

  {

     if(ispunct(c)!=0)

       cout<<c;

  }

 

}

*/

//3.11

合法,const char

 

//3.12

全对

//3.13

a:1

b:10

c:10

d:1

e:10

f:1

g:10

 

//3.14

/*

#include<iostream>

#include<vector>

using namespace std;

int main()

{

   int t;

   vector<int>a;

   while(cin>>t)

  {

     a.push_back(t);

  }

}*/

 

//3.15

 

#include<iostream>

#include<vector>

using namespace std;

int main()

{

   string t;

   vector<string>a;

   while(cin>>t)

  {

     a.push_back(t);

  }

}

//3.16

/*

#include<iostream>

#include<vector>

using namespace std;

int main()

{

   int t;

   vector<int>a;

   while(cin>>t)

  {

     a.push_back(t);

  }

 cout<<a.size()<<endl;

 for(int i=0;i<a.size();i++)

   cout<<a[i]<<" ";

}

 

#include<iostream>

#include<vector>

using namespace std;

int main()

{

   string t;

   vector<string>a;

   while(cin>>t)

  {

     a.push_back(t);

  }

 vector<string>::iterator it1=a.begin();

 vector<string>::iterator it2=a.end();

 while(it1!=it2)

  {

     cout<<*it1<<endl;

     it1++;

  }

}

*/

 

 

//3.17

/*

#include<iostream>

#include<vector>

#include<cstring>

#include<cctype>

using namespace std;

int main()

{

   string t;

   int i;

   vector<string>a;

   while(cin>>t)

  {

     for(i=0;i<t.size();i++)

        t[i]=toupper(t[i]);

     a.push_back(t);

  }

 vector<string>::iterator it1=a.begin();

 vector<string>::iterator it2=a.end();

 while(it1!=it2)

  {

     cout<<*it1<<endl;

     it1++;

  }

}

 

 

*/

 

//3.18

 

/*

不对。动态数组,这个时候还没有ivec【0】这个区域

*/

 

//3.20

#include<iostream>

#include<vector>

using namespace std;

int main()

{

   vector<int>iter;

   int i=10;

   while(i--)

      iter.push_back(i);

   for(i=0;i<5;i++)

       cout<<iter[i]+iter[9-i]<<endl;

}

//3.21

#include <iostream>

#include<vector>

 

using namespace std;

 

int main()

{

   vector<int>ivec;

   int i;

   while(cin>>i)

    {

       ivec.push_back(i);

    }

   for(auto it=ivec.begin();it!=ivec.end();++it)

    {

       cout<<*it<<endl;

    }

}

//3.22

#include <iostream>

#include<vector>

 

using namespace std;

 

int main()

{

   vector<string>ivec;

   string word;

   while(cin>>word)

    {

       ivec.push_back(word);

    }

   auto it=ivec.begin();

 

   for(auto itr=(*it).begin();itr!=(*it).end();itr++)

       *itr=toupper(*itr);

   for(auto it=ivec.begin();it!=ivec.end();++it)

     cout<<*it<<endl;

}

//3.23

#include <iostream>

#include<vector>

 

using namespace std;

 

int main()

{

   int i;

   vector<int>ivec;

   for(i=0;i<10;i++)

       ivec.push_back(i);

   vector<int>::iterator it=ivec.begin();

   for(;it!=ivec.end();++it)

        *it=2*(*it);

   it=ivec.begin();

      for(;it!=ivec.end();++it)

        cout<<*it<<endl;

}

 

//3.24

 

#include<iostream>

#include<vector>

using namespace std;

int main()

{

   vector<int>iter;

   int i=10;

   while(i--)

      iter.push_back(i);

   vector<int>::iterator it=iter.begin();

   for(;it<iter.end()-1;it=it+2)

    {

       cout<<(*it)+(*it+1)<<endl;

 

    }

   if(iter.size()%2!=0)

       cout<<"最后一个没有"<<endl;

}

//3.25

//3.26

指针和迭代器不支持加法运算,只支持减法!

//3.27

a:非法:非常量

b:对

c:非常量

d:大于11了

//3.28

String的为0

Int的为随机数

//3.29

大小固定,不能随意的加元素

//3.30

For的=号不应该存在!!从0开始的

//3.31

//3.32

//3.33

那样我们无法预知score的值

//3.34

让p1=p2.

可以说p2-p1求出了差值。再让p1加上那个差值

//3.35

#include<iostream>

#include<vector>

using namespace std;

int main()

{

   int a[10];

   int *p=a;

   int i;

   for(int i=0;i<10;i++)

       *(p+i)=0;

   for(i=0;i<10;i++)

       cout<<*p<<endl;

}

//3.36

#include<iostream>

#include<vector>

using namespace std;

int main()

{

   int a[10];

    int b[10];

    int t;

    int i;

    for(i=0;i<10;i++)

    {

        cin>>t;

        a[i]=t;

    }

    for(i=0;i<10;i++)

    {

        cin>>t;

        b[i]=t;

    }

    int flag=1;

    for(i=0;i<10;i++)

        if(a[i]!=b[i])

    {

        flag=0;

        break;

    }

    if(flag)

       cout<<"ok"<<endl;

    else

       cout<<"不"<<endl;

}

 

#include<iostream>

#include<vector>

using namespace std;

int main()

{

   vector<int>a;

    vector<int>b;

     int t;

    int i;

    for(i=0;i<10;i++)

    {

        cin>>t;

        a.push_back(t);

    }

    for(i=0;i<10;i++)

    {

        cin>>t;

        b.push_back(t);

    }

    int flag=1;

    for(i=0;i<10;i++)

       if(a[i]!=b[i])

    {

        flag=0;

        break;

    }

    if(flag)

       cout<<"ok"<<endl;

    else

       cout<<"不"<<endl;

}

//3.37

输出每一个,每输出一个就来一个换行

//3.38

比如,a为地球到太阳的距离,b为火星到太阳的距离,b-a我们可以得到地球与火星的距离,但a+b没有任何作用

//3.39

//3.40

#include<iostream>

#include<vector>

#include<cstring>

using namespace std;

int main()

{

    char a[100];

    char b[100];

    cin>>a>>b;

     char c[200];

    strcpy(c,a);

    strcat(c,b);

    cout<<c<<endl;

}

//3.41

#include<iostream>

#include<vector>

#include<cstring>

using namespace std;

int main()

{

    int a[5]={1,2,3,4};

    vector<int>ivec(begin(a),end(a));

    for(auto :ivec)

        cout<<i<<endl;

}

//3.42

#include<iostream>

#include<vector>

#include<cstring>

using namespace std;

int main()

{

    vector<int>ivec;

    int i;

    while(cin>>i)

    {

        ivec.push_back(i);

    }

    int *a=new int[ivec.size()];

    for(auto it=ivec.begin();it!=ivec.end();++it)

    {

        *a++=*it;

    }

    for(auto i:ivec)

       cout<<i<<endl;

}

//3.43

略。。会一种就行啦

//3.44

#include<iostream>

#include<vector>

#include<cstring>

using namespace std;

int main()

{

   int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

   typedef int b[4];

   for(b *p=a;p!=(a+3);++p)

    {

       for(int *q=*p;q!=*p+4;++q)

           cout<<*q<<" ";

       cout<<endl;

    }

}

//3.45

#include<iostream>

#include<vector>

#include<cstring>

using namespace std;

int main()

{

   int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

   for(auto*p=a;p!=(a+3);++p)

    {

       for(auto*q=*p;q!=*p+4;++q)

           cout<<*q<<" ";

       cout<<endl;

    }

}

 

0 0
原创粉丝点击