【自考】CODE:4737-C++程序设计(课后习题答案)

习题1

一、单项选择题

  1. 下列选项中不是C++语言关键字的是( B )。
    A. typedef  B. mycase  C. typeid  D. typename
  2. 下列选项中不是C++语言合法标识符的是( C )。
    A. area  B. _age  C. -xy  D. w123
  3. 下列选项中正确的标识符是( C )。
    A. case  B. de。fault  C. c_ase  D. a.b

二、填空题

  1. 用来处理标准输入的是 cin ,用来处理屏幕输出的是 cout
  2. 动态分配内存使用关键字 new ,释放内存使用关键字 delete
  3. 为整数55分配一块内存的语句为 new int[55]

三、改错题

1、分析如下主程序中的错误。

    void main() {
        int &ref = num;
        ref = ref + 50;
        num = num + 50;
    }
答:局部变量num没有定义。

2、分析如下主程序中的错误。

    void main() {
        int x = 58, y = 98;
        const int *p = &x;
        *p = 65;
        p = &y
    }
答:p是指向常量的指针,其值不能被改变。

3、分析如下主程序中的错误。

    void main() {
        int x = 58, y = 98, z = 55;
        int * const p = &x;
        *p = 65;
        p = &y;
        z = *p;
    }
答:p是常量指针, 其存储的地址不能被改变。

四、编程题

1、分别用字符和ASCII码形式输出整数值65和66。

    #include <iostream>
    using namespace std;
    int main()
    {
        int temp1 = 65, temp2 = 66;
        cout << (char)temp1 << " " << (char)temp2 << endl;
        cout << temp1 << " " << temp2 << endl;
        return 0;
    }
    ----------
    result:
    A B
    65 66

2、编写一个为int型变量分配100个整形量空间的程序。

    #include <iostream>
    using namespace std;
    int main()
    {
        int *ptr = new int[100];
        delete []ptr;
        return 0;
    }

3、编写完整的程序,它读入15个float值,用指针把它们存放在一个存储块里,然后输出这些值的和以及最小值。

    #include <iostream>
    using namespace std;
    const int num = 15;
    int main()
    {
        float temp[num];
        float count = 0.0f;
        float mini = 0.0f;
        cout << "Please insert 15 numbers." << endl;
        for (int i = 0; i < num; ++i)
        {
            cin >> temp[i];
            count += temp[i];
            if (temp[i] < mini || i == 0)
            {
                mini = temp[i];
            }
        }
        cout << "equal: " << count << endl;
        cout << "mininum: " << mini << endl;
        return 0;
    }
    ----------
    result:
    Please insert 15 numbers.
    1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.1 3.2 3.3 0.9    
    equal: 27
    mininum: 0.9

4、声明如下数组:int a[ ] = {1, 2, 3, 4, 5, 6, 7, 8};先查找4的位置,将数组a复制给数组b,然后将数组a的内容反转,再查找4的位置,最后分别输出数组a和b的内容。

    #include <iostream>
    using namespace std;
    const int num = 8;
    int find(int a[], int key, int n)
    {
        for (int i = 0; i < n; ++i)
        {
            if (a[i] == key)
            {
                return i + 1;
            }
        }
        return 0;
    }
    void copy(int a[],int b[], int n)
    {
        for (int i = 0; i < n; ++i)
        {
            b[i] = a[i];
        }
    }
    void reverse(int a[], int n)
    {
        int temp;
        int i, j = n - 1, m = (n - 1) / 2;
        for (i = 0; i <= m; ++i)
        {
            j = n - 1 - i;
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
    }
    int main()
    {
        int a[] = {1, 2, 3, 4, 5, 6, 7, 8};
        cout << find(a, 4, num) << endl;
        int b[num];
        copy(a, b, num);
        reverse(a, num);
        cout << find(a, 4, num) << endl;
        for (int i = 0; i < num; ++i)
        {
            cout << a[i] << " ";
        }
        cout << endl;
        for (int i = 0; i < num; ++i)
        {
            cout << b[i] << " ";
        }
        cout << endl;
        return 0;
    }
    ----------
    result:
    4
    5
    8 7 6 5 4 3 2 1 
    1 2 3 4 5 6 7 8 

你可能感兴趣的:(自考,C++程序设计,课后习题答案,4737)