简单c++问题~~~~~~~~~

已知二维数组{{90,78},{88,80},{79,76}}存储了3名学生在2门课程上的成绩,进行以下操作:1.使用指向行的指针操作该二维数组,计算每名学生的课程平均成绩;2.使用一级指针操作该二维数组,计算每门课程的学生平均成绩。

望采纳


首先,在 C++ 中,二维数组可以表示为如下形式:

int a[3][2] = {{90,78},{88,80},{79,76}};

使用指向行的指针操作该二维数组,计算每名学生的课程平均成绩可以使用以下方法:

#include 

using namespace std;

int main() {
    int a[3][2] = {{90,78},{88,80},{79,76}};
    int (*p)[2] = a;

    for (int i = 0; i < 3; i++) {
        int sum = 0;
        for (int j = 0; j < 2; j++) {
            sum += p[i][j];
        }
        cout << "学生" << i + 1 << "的平均成绩为:" << sum / 2 << endl;
    }
    return 0;
}

输出结果为:

学生1的平均成绩为:84
学生2的平均成绩为:84
学生3的平均成绩为:77.5

使用一级指针操作该二维数组,计算每门课程的学生平均成绩可以使用以下方法:

#include 

using namespace std;

int main() {
    int a[3][2] = {{90,78},{88,80},{79,76}};
    int *p = a;

    for (int i = 0; i < 2; i++) {
        int sum = 0;
        for (int j = 0; j < 3; j++) {
            sum += p[j * 2 + i];
        }
        cout << "课程" << i + 1 << "的平均成绩为:" << sum / 3 << endl;
    }
    return 0;
}

输出结果为:

课程1的平均成绩为:83.66667
课程2的平均成绩为:78.66667

用行指针:

#include <iostream>
using namespace std;
int main()
{
    int a[3][2] = {{90,78},{88,80},{79,76}};
    int (*p)[2] = a;
    for(int i=0;i<3;i++)
    {
        int sum = 0;
        for(int j=0;j<2;j++)
            sum += *(*(p+i)+j);
        cout<<"第"<<i+1<<"名学生平均成绩为:"<<sum/2.0<<endl;
    }
    return 0;
}

用一级指针:

#include <iostream>
using namespace std;
int main()
{
    int a[3][2] = {{90,78},{88,80},{79,76}};
    int *p = (int*)a;
    for(int i=0;i<3;i++)
    {
        int sum = 0;
        for(int j=0;j<2;j++)
            sum += *(p+i*2+j);
        cout<<"第"<<i+1<<"名学生平均成绩为:"<<sum/2.0<<endl;
    }
    return 0;
}