C++ primer第五版 第三章

3.2

#include<iostream>
#include<string>

using namespace std;
int main()
{
    //输入一行数据
    string str;
    cout << "please enter the string:";
    getline(cin,str);
    cout << "the string is:" << str << endl;

    //输入单个字符
    string str2,str3;
    cout << "please enter the string:";
    cin >> str2 >> str3;
    cout << "the string is " << str2 << str3;
    return 0;
}

3.4

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s1,s2;
    while(cin >> s1 >> s2)
    {
        if(s1 == s2)
            cout <<"two strings equal"<< s1 << endl;
        else
            cout << "the larger string is " << (s1>s2?s1:s2) << endl;
    }


    return 0;
}

3.4.2

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s1,s2;
    while(cin >> s1 >> s2)
    {
        if(s1.size() == s2.size())
            cout << "The two strings's length is same" << endl;
        else
            cout << "The larger string is :" << (s1.size()>s2.size()?s1:s2) << endl;

    }

    return 0;
}
#include<iostream>
#include<string>
using namespace std;
int main()
{
    string largeStr;
    string str;
    while(cin >> str) //Ctrl + Z结束
    {
        largeStr += str;
    }
    cout << "The concatenated string is " << largeStr << endl;

    return 0;
}

3.5.2

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string largeStr;
    string str;
    while(cin >> str)
    {
        if(largeStr.empty())
            largeStr += str;
        else
            largeStr += " " + str;
    }
    cout << "The concatenated string is " << largeStr << endl;

    return 0;
}

3.6

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str;
    cout << "please enter the String:";
    cin >> str;
    for(auto &s:str)
        s = 'X';
    cout << str << endl;


    return 0;
}

3.8

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string str;
    cout << "please enter the String:";
    cin >> str;
    decltype(str.size()) index = 0;
    while(index<str.size())
    {
        str[index] = 'X';
        index++;
    }
    cout << str << endl;

    for(index = 0;index<str.size();index++)
        str[index] = 'Y';
    cout << str << endl;
    return 0;
}

3.10

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s;
    cout << "Enter a string of characters including punctuation."<<endl;
    while(cin >> s)
    {
        for(auto &i:s)
            if(!ispunct(i))cout << i;
        cout << endl;
    }

    return 0;
}

3.14

#include<iostream>
#include<vector>

using namespace std;

int main()
{
    vector<int> v1;
    int i;
    while(cin >> i)
    {
        v1.push_back(i);
    }
    for(int i = 0;i < v1.size();i++)
    {
        cout << v1[i] << endl;
    }

    return 0;
}

3.15

#include<iostream>
#include<string>
#include<vector>

using namespace std;
int main()
{
    vector<string> vec;
    string str;
    while(cin >> str)
    {
        vec.push_back(str);
    }
    for(auto &v : vec)
    {
        cout << v << endl;
    }
    return 0;
}

3.16

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int> v1;
    cout << "{\n \"v1\":{\"size\":\"" << v1.size() << "\",\"value\":[";
    for (auto i : v1) cout << i << ",";
    if (!v1.empty()) cout << "\b";
    cout << "]}" << endl;

    vector<int> v2(10);
    cout << " \"v2\":{\"size\":\"" << v2.size() << "\",\"value\":[";
    for (auto i : v2) cout << i << ",";
    if (!v2.empty()) cout << "\b";
    cout << "]}" << endl;

    vector<int> v3(10, 42);
    cout << " \"v3\":{\"size\":\"" << v3.size() << "\",\"value\":[";
    for (auto i : v3) cout << i << ",";
    if (!v3.empty()) cout << "\b";
    cout << "]}" << endl;

    vector<int> v4{10};
    cout << " \"v4\":{\"size\":\"" << v4.size() << "\",\"value\":[";
    for (auto i : v4) cout << i << ",";
    if (!v4.empty()) cout << "\b";
    cout << "]}" << endl;

    vector<int> v5{10, 42};
    cout << " \"v5\":{\"size\":\"" << v5.size() << "\",\"value\":[";
    for (auto i : v5) cout << i << ",";
    if (!v5.empty()) cout << "\b";
    cout << "]}" << endl;

    vector<string> v6{10};
    cout << " \"v6\":{\"size\":\"" << v6.size() << "\",\"value\":[";
    for (auto i : v6)
        if (i.empty())
            cout << "(null)"
                 << ",";
        else
            cout << i << ",";
    if (!v6.empty()) cout << "\b";
    cout << "]}" << endl;

    vector<string> v7{10, "hi"};
    cout << " \"v7\":{\"size\":\"" << v7.size() << "\",\"value\":[";
    for (auto i : v7)
        if (i.empty())
            cout << "(null)"
                 << ",";
        else
            cout << i << ",";
    if (!v7.empty()) cout << "\b";
    cout << "]}\n}" << endl;




    return 0;
}

3.17

#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main()
{
    vector<string> vec;
    string str;

    while(cin >> str)
    {
        vec.push_back(str);
    }
    for(auto &s:vec) //s是一个字符串
    {
        for(auto &c:s) //c是单个字符char
        {
            c = toupper(c);//toupper函数只能对单个字符处理
        }
    }
    for(auto s:vec)
    {
        cout << s << endl;
    }
    return 0;
}

3.19

#include<iostream>
#include<vector>

using namespace std;

int main()
{
    vector<int> v1(10,42);
    vector<int> v2{42,42,42,42,42,42,42,42,42,42};
    vector<int> v3;
    for(int i = 0;i<10;i++)
    {
        v3.push_back(42);
    }
    cout << "The first approach is better!" << std::endl;
    return 0;
}

3.20

#include<iostream>
#include<vector>

using namespace std;

int main()
{
    vector<int> vec;
    int i;
    while(cin >> i) vec.push_back(i);
    if(vec.empty())
    {
        cout << "At least input one integer" << endl;
        return -1;
    }
    else if(vec.size()==1)
    {
        cout << vec[0] << " don't have any adjacent elements.";
    }
    else
    {
        for(decltype(vec.size()) i = 0;i<vec.size()-1;i++)
        {
            cout << vec[i] + vec[i+1] << " ";
        }
    }
    cout << endl;

    decltype(vec.size()) size = vec.size();
    if (size % 2 != 0)
        size = size / 2 + 1;
    else
        size /= 2;

    for(decltype(vec.size()) i = 0;i<size;i++)
    {
        cout << vec[i] + vec[vec.size()-1-i] << " ";
    }
    cout << endl;

    return 0;
}

3.21 

#include<iostream>
#include<vector>

using namespace std;

int main()
{
    vector<int> vec;
    int i;
    while(cin >> i) vec.push_back(i);
    if(vec.empty())
    {
        cout << "At least input one integer" << endl;
        return -1;
    }
    else if(vec.size()==1)
    {
        cout << vec[0] << " don't have any adjacent elements.";
    }
    else
    {
        for(decltype(vec.size()) i = 0;i<vec.size()-1;i++)
        {
            cout << vec[i] + vec[i+1] << " ";
        }
    }
    cout << endl;

    decltype(vec.size()) size = vec.size();
    if (size % 2 != 0)
        size = size / 2 + 1;
    else
        size /= 2;

    for(decltype(vec.size()) i = 0;i<size;i++)
    {
        cout << vec[i] + vec[vec.size()-1-i] << " ";
    }
    cout << endl;

    return 0;
}

3.22

#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main()
{
    vector<string> text;
    string s;
    while(getline(cin,s))
    {
        text.push_back(s);
    }
    for(auto it = text.begin();it < text.end()&&!it->empty();it++)
    {
        for(auto &c : *it) c = toupper(c);
        cout << *it << endl;

    }

    return 0;
}

3.23

#include<iostream>
#include<vector>

using namespace std;

int main()
{
    vector<int> v(10,1);

    for(auto it = v.begin();it<v.end();it++)
    {
        *it = *it * 2;
    }

    for(auto i:v)
        cout << i << endl;
    return 0;
}

3.24

#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main()
{
    vector<int> ivec;
    int i;
    while(cin >> i)
    {
        ivec.push_back(i);
    }
    if (ivec.empty()) {
        cout << "input at least one integer." << endl;
        return -1;
    }
    else if (ivec.size() == 1) {
        cout << *ivec.begin() << " has no adjacent elements.";
    }

    for(auto iter = ivec.begin();iter+1!=ivec.end();iter++)
    {
        cout << (*iter) + *(iter+1) << " ";
    }
    cout << endl;

    for(auto b = ivec.begin(),e = (ivec.end()-1);b<=e;b++,e--)
    {
        cout << *b + *e << " ";
    }
    return 0;
}

3.25

#include <vector>
#include <iterator>
#include <iostream>

using std::vector;
using std::cout;
using std::cin;
using std::endl;

int main()
{
    vector<unsigned> scores(11, 0);
    unsigned grade;
    while (cin >> grade)
        if (grade <= 100) ++(*(scores.begin() + grade / 10));

    for (auto score : scores) cout << score << " ";
    cout << endl;

    return 0;
}

3.31

#include<iostream>
#include<cstddef>
using namespace std;

int main()
{
    int arr[10];
    for(size_t i = 0;i<10;i++)
    {
        arr[i] = i;
    }
    for(auto &i:arr)
    {
        cout << i << " ";
    }
    return 0;
}

3.32

#include<iostream>
#include<vector>

using namespace std;

int main()
{
    int arr[10];
    for(size_t i = 0;i<10;i++)
    {
        arr[i] = i;
    }
    for(auto &i:arr)
    {
        cout << i << " ";
    }
    cout << endl;
    int arr2[10];
    for(size_t i = 0;i<10;i++)
    {
        arr2[i] = arr[i];
    }
    for(auto &i:arr2)
        cout << i << " ";
    cout << endl;
    vector<int> vec(10);
    for(auto iter = vec.begin();iter!=vec.end();iter++)
    {
        *iter = iter - vec.begin();
    }
    for(auto &i:vec) cout << i << " ";
    cout << endl;
    vector<int> v2(vec);
    for(auto &i:v2) cout << i << " ";
    cout << endl;
    return 0;
}







3.35 

#include<iostream>
#include<iterator>

using namespace std;

int main()
{
    int arr[10];
    int *b = begin(arr);
    int *e = end(arr);
    for(int *i = b; i!=e;i++)
        *i = 0;
    for(auto i:arr)
        cout << i << " ";


    return 0;
}

3.36

#include <iostream>
#include <vector>
#include <iterator>

using std::begin;
using std::end;
using std::cout;
using std::endl;
using std::vector;

// pb point to begin of the array, pe point to end of the array.
bool compare(int* const pb1, int* const pe1, int* const pb2, int* const pe2)
{
    if ((pe1 - pb1) != (pe2 - pb2)) // have different size.
        return false;
    else {
        for (int *i = pb1, *j = pb2; (i != pe1) && (j != pe2); ++i, ++j)
            if (*i != *j) return false;
    }

    return true;
}

int main()
{
    int arr1[3] = {0, 1, 2};
    int arr2[3] = {0, 2, 4};

    if (compare(begin(arr1), end(arr1), begin(arr2), end(arr2)))
        cout << "The two arrays are equal." << endl;
    else
        cout << "The two arrays are not equal." << endl;

    cout << "==========" << endl;

    vector<int> vec1 = {0, 1, 2};
    vector<int> vec2 = {0, 1, 2};

    if (vec1 == vec2)
        cout << "The two vectors are equal." << endl;
    else
        cout << "The two vectors are not equal." << endl;

    return 0;
}

3.39

#include <iostream>
#include <string>
#include <cstring>

using std::cout;
using std::endl;
using std::string;

int main()
{
    // use string.
    string s1("Mooophy");
    string s2("Pezy");

    if (s1 == s2)
        cout << "same string." << endl;
    else if (s1 > s2)
        cout << "Mooophy > Pezy" << endl;
    else
        cout << "Mooophy < Pezy" << endl;

    cout << "=========" << endl;
    // use C-Style character strings.
    const char* cs1 = "Wangyue";
    const char* cs2 = "Pezy";

    auto result = strcmp(cs1, cs2);
    if (result == 0)
        cout << "same string." << endl;
    else if (result < 0)
        cout << "Wangyue < Pezy" << endl;
    else
        cout << "Wangyue > Pezy" << endl;

    return 0;
}

3.40

#include<iostream>
#include<cstring>

using namespace std;

int main()
{
    char cstr1[] = "Hello";
    char cstr2[] = "World!";

    size_t new_size = strlen(cstr1) + strlen(" ") + strlen(cstr2) + 1;

    char *cstr3 = new char[new_size];

    strcpy(cstr3,cstr1);
    strcat(cstr3," ");
    strcat(cstr3,cstr2);

    cout << cstr3 << endl;

    return 0;
}

3.41

#include<iostream>
#include<iterator>
#include<vector>
int main()
{
    int arr[10] = {0,1,2,3,4,5,6,7,8,9};
    std::vector<int> v(std::begin(arr),std::end(arr));

    for(auto &i : v)
        std::cout << i << " ";

    return 0;
}

3.42

#include <iostream>
#include <vector>

using std::vector;
using std::cout;
using std::endl;
using std::begin;
using std::end;

int main()
{
    vector<int> ivec{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int int_arr[10];

    for (int* i = begin(int_arr); i != end(int_arr); ++i)
        *i = ivec[i - begin(int_arr)];

    for (auto i : int_arr) cout << i << " ";
    cout << endl;

    return 0;
}

3.44


#include <iostream>

using std::cout;
using std::endl;

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

    // a range for to manage the iteration
    // use type alias
    using int_array = int[4];
    for (int_array& p : ia)
        for (int q : p) cout << q << " ";
    cout << endl;

    // ordinary for loop using subscripts
    for (size_t i = 0; i != 3; ++i)
        for (size_t j = 0; j != 4; ++j) cout << ia[i][j] << " ";
    cout << endl;

    // using pointers.
    // use type alias
    for (int_array* p = ia; p != ia + 3; ++p)
        for (int* q = *p; q != *p + 4; ++q) cout << *q << " ";
    cout << endl;

    return 0;
}

3.45

#include <iostream>

using std::cout;
using std::endl;

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

    // a range for to manage the iteration
    for (auto& p : ia)
        for (int q : p) cout << q << " ";
    cout << endl;

    // ordinary for loop using subscripts
    for (size_t i = 0; i != 3; ++i)
        for (size_t j = 0; j != 4; ++j) cout << ia[i][j] << " ";
    cout << endl;

    // using pointers.
    for (auto p = ia; p != ia + 3; ++p)
        for (int* q = *p; q != *p + 4; ++q) cout << *q << " ";
    cout << endl;

    return 0;
}
发布了80 篇原创文章 · 获赞 101 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/BigDream123/article/details/103003487