《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;
}

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值