《C++ Primer》第五版课后习题解答_第三章(4)(30-36)

系统环境: windows 10 1703

编译环境:Visual studio 2017


3.30

数组 ia 中共有 10 个元素,其下标分别为从 0 到 9。当 ix == array_size 即 ix == 10 时,数组的下标超出范围,出现索引错误。


3.31

#include <iostream>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::vector;

int main()
{
    int iarr[10];
    for (size_t i = 0; i != 10; ++i)
    {
        iarr[i] = i;
    }
    for (auto a : iarr)
    {
        cout << a << endl;
    }
    return 0;
}

3.32

#include <iostream>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::vector;

int main()
{
    //数组
    int iarr[10];
    int iarr2[10];
    for (size_t i = 0; i != 10; ++i)
    {
        iarr[i] = i;
    }
    for (size_t i = 0; i != 10; ++i)
    {
        iarr2[i] = iarr[i];
    }

    //vector
    vector<int> ivec(10);
    for (vector<int>::size_type i = 0; i != 10; ++i)
    {
        ivec[i] = i;
    }
    vector<int> ivec2 = ivec;
    return 0;
}

3.33

如果不初始化 scores,因为其定义在 main 函数作用域内,故其元素将不被初始化,处于 undefined 状态。对其进行加法操作时,无法预料其结果。


3.34

功能是将 p1 指向 p2 指向的元素。若 p1 或 p2 其中之一非法,则该程序非法。


3.35

#include <iostream>
using std::cout;
using std::endl;

int main()
{
    int iarr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int *p1 = iarr;
    for (p1; p1 != iarr + 10; ++p1)
    {
        *p1 = 0;
    }
    for (auto a : iarr)
    {
        cout << a << endl;
    }
    return 0;
}

3.36

#include <iostream>
#include <iterator> // 为了使用数组的std::end()函数
using std::cout;
using std::endl;

// 数组
int main()
{
    int iarr1[] = {1, 2, 3, 4, 5, 6, 8};
    int iarr2[] = {1, 2, 3, 4, 5, 6, 7};
    int *b1 = iarr1;
    int *b2 = iarr2;
    int *e1 = std::end(iarr1);
    int *e2 = std::end(iarr2);
    if ((e1 - b1) == (e2 - b2))
    {
        for (b1; b1 != e1; ++b1)
        {
            if (*b1 != *b2)
            {
                cout << "Not Equal!!!" << endl;
                cout << "iarr1 " << *b1 << endl;
                cout << "iarr2 " << *b2 << endl;
            }
            ++b2;
        }
    }
    else
    {
        cout << "Not Equal!!!" << endl;
    }
    return 0;
}
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;

// vector
int main()
{
    vector<int> ivec1(10, 2);
    vector<int> ivec2(11, 3);
    if (ivec1 != ivec2)
    {
        cout << "Not Euqal!!!" << endl;
    }
    return 0;
}


posted @ 2017-08-25 17:58  Adam_fei  阅读(135)  评论(0编辑  收藏  举报