Jimmy Chen

A Programmer

C++ Primer Plus 第六版 第七章课后编程练习答案

编程环境Visual Studio 2017

此文为博主原创文章,转载请注明出处

  1. poppy说道:

    第二题练习input那里改成这样更好吧
    while (cin >> grade[(*number)++], *number < 10)
    {
    if (grade[*number - 1] == -1)
    {
    (*number)--;
    break;
    }

    1. jimmychen说道:

      好像比较少看到有这种用法啊。另外这里提出问题与你探究下:在while的条件判断语句里面使用逗号表达式,貌似是以最后一个逗号表达式的值作为while判断语句的值吧,那如果cin执行输入有误的话,用逗号表达式的while判断好像没有办法判断出来吧!

      1. poppy说道:

        啊,我是自己刚开始看书自学的,后来研究了一下while那样用好像是不好,下面是我自己写的第二题代码,感觉bug会少点
        #include
        using namespace std;

        void input( double *x ,int &enter);
        void show(double *x, int enter);
        void avg(double *x, int enter);

        int main()
        {
        double grade[10];
        int enter;
        input(grade,enter);
        show(grade, enter);
        avg(grade, enter);
        return 0;
        }

        void input(double *x, int &enter)
        {
        cout << "你可以最多输入10个成绩,输入-1提前结束" << endl;
        for (enter = 0; enter > x[enter];
        if (x[enter] ==(-1))
        break;
        }
        return;

        }

        void show(double *x, int enter)
        {
        for (int i = 0; i < enter; i++)
        {
        cout << x[i] << " ";
        }
        return;
        }

        void avg(double *x, int enter)
        {
        double sum, avg;
        for (int i = 0; i < enter; i++)
        {
        sum += x[i];
        }
        avg = sum / enter;
        cout << endl << "平均成绩是" << avg << endl;
        return;
        }

  2. 曹苏乐说道:

    自学中,谢谢楼主大大的答案参考。
    第二题输入数组数据的修改,楼主大大可以看下。
    void input(int arr[],int *n)
    {

    for (int i = 0; i < 10; i++)
    {
    cout << "input grade" << i+1 <> arr[i];
    if (arr[i] == -1)
    {
    (*n) = i;
    break;
    }
    }

    }

  3. w说道:

    7-7fill_array函数要求返回值是一个指向结尾的指针不是数字

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注