C++primer[習題][第三章][31-45]

  • 3.31
int main()
{
    int arr[10];
    for (int ix = 0; ix < 10; ix++)
        arr[ix] = ix;
    return 0;
}
  • 3.32
#include <vector>
using std::vector;

int main()
{
    int arr1[10], arr2[10];
    for (int ix = 0; ix < 10; ix++)
        arr1[ix] = ix;
    for (int ix = 0; ix < 10; ix++)
        arr2[ix] = arr1[ix];

    vector<int>ivec1, ivec2;
    for (int ix = 0; ix < 10; ix++)
        ivec1.push_back(ix);
    ivec2 = ivec1;
    return 0;
}
  • 3.33

不初始化scores,則scores裏面所有元素的初始值將是未定義。

  • 3.34

p1 += p2 - p1;
功能是將p1指向p2指向的元素。
當p1是常量指針時非法。

  • 3.35
int main()
{
    int arr[100];
    for (auto p = arr; p < arr + 100; p++)
    {
        *p = 0;
    }

    return 0;
}
  • 3.36
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
    int arr1[10], arr2[10];
    bool isSame = true;
    for (int i = 0; i < 10; i++)
    {
        arr1[i] = i;
        arr2[i] = 9 - i;
    }
    for (int i = 0; i < 10; i++)
        if (arr1[i] != arr2[i])
            isSame = false;
    cout << (isSame ? "Yes" : "No") << endl;

    vector<int>ivec1, ivec2;
    for (int i = 0; i < 10; i++)
    {
        ivec1.push_back(i);
        ivec2.push_back(9 - i);
    }
    cout << (ivec1 == ivec2 ? "Yes" : "No") << endl;
    return 0;
}
  • 3.37
const char ca[] = { 'h','e','l','l','o' };
const char *cp = ca;
while (*cp)
{
    cout << *cp << endl;
    cp++;
}

將字符串打印出來,最後沒有空字符,所以不會跳出循環。

  • 3.38

兩指針(同一數組)相減表示之間相差距離,指針加上一個整數表示指針移動到某一位置,兩個指針相加並沒有實際意義。

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

int main()
{
    char ch1[10] = "hello";
    char ch2[10] = "hello";
    bool isSame = true;
    for (auto i = 0; i < 5; i++)
    {
        if (ch1[i] != ch2[i])
            isSame = false;
    }
    cout << (isSame ? "Yes" : "No") << endl;

    string str1, str2;
    str1 = "hello";
    str2 = "hello";
    cout << (str1 == str2 ? "Yes" : "No") << endl;
    return 0;
}
  • 3.40
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    char ch1[] = "hello ";
    char ch2[] = "world!";
    char ch3[20];
    strcpy_s(ch3, ch1);
    strcat_s(ch3, ch2);
    cout << ch3 << endl;
    return 0;
}
  • 3.41
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;

int main()
{
    int arr[10];
    for (int ix = 0; ix < 10; ix++)
        arr[ix] = ix;
    vector<int>ivec(arr, arr + 10);
    for (auto ix : ivec)
    {
        cout << ix << endl;
    }
    return 0;
}
  • 3.42
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;

int main()
{
    vector<int>ivec;
    for (int ix = 0; ix < 10; ix++)
        ivec.push_back(ix);

    int arr[10], ix = 0;
    for (auto iter = ivec.begin(); iter != ivec.end(); iter++)
    {
        arr[ix] = *iter;
        ix++;
    }
    for (auto ix : arr)
    {
        cout << ix << endl;
    }
    return 0;
}
  • 3.43
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    int arr[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
    //1
    for (int(&i)[4] : arr)
        for (int j : i)
            cout << j << " ";
    cout << endl;

    //2
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 4; j++)
            cout << arr[i][j] << " ";
    cout << endl;

    //3
    for (int(*i)[4] = arr; i != arr + 3; i++)
        for (int *j = *i; j != *i + 4; j++)
            cout << *j << " ";
    cout << endl;
    return 0;
}
  • 3.44
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    int arr[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
    using int_arr = int[4];
    //1
    for (int_arr &i : arr)
        for (int j : i)
            cout << j << " ";
    cout << endl;

    //2
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 4; j++)
            cout << arr[i][j] << " ";
    cout << endl;

    //3
    for (int_arr *i = arr; i != arr + 3; i++)
        for (int *j = *i; j != *i + 4; j++)
            cout << *j << " ";
    cout << endl;
    return 0;
}
  • 3.45
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    int arr[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
    using int_arr = int[4];
    //1
    for (auto &i: arr)
        for (auto &j : i)
            cout << j << " ";
    cout << endl;

    //2
    for (auto i = 0; i < 3; i++)
        for (auto j = 0; j < 4; j++)
            cout << arr[i][j] << " ";
    cout << endl;

    //3
    for (auto i = arr; i != arr + 3; i++)
        for (auto j = i; j != i + 4; j++)
            cout << *j << " ";
    cout << endl;
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章