c++ 按下列要求编写程序:输入一个6*6的二维数组的输入,二维数组的平均值计算和输出,

c++ 按下列要求编写程序:输入一个6*6的二维数组的输入,二维数组的平均值计算和输出,二维数组的最大值及其所在的行号、列号的寻找和输出。
(1)为一个6*6的二维整型数组输入数据的任务由函数Input()完成,该函数用指向一维数组的指针变量和二维数组的行数作形参,无返回值。
(2)为一个6*6的二维整型数组升序排序的任务由函数Sort()完成,该函数用整型指针变量和一维数组的元素个数作形参,无返回值。
(3)在main()函数中调用上述函数,实现二维数组多输入,二维数组的排序和输出。

#include <iostream>
using namespace std;

void Input(int *a, int rows) {
    for (int i=0;i<rows;i++) {
        cout << "Input row [" << i << "]:";
        for (int j=0;j<6;j++) {
            cin >> *(a + i*6 +j);
        }
    }
}

double Average(int *a, int size) {
    double sum = 0.0;
    for (int i=0;i<size;i++)
        sum += *(a+i);
    return sum/size;
}

/**
  * 返回最大值所在行、列号
  */
void Max(int *a, int rows, int cols, int *r, int *c) {
    int *b = a+1, m = *a;
    *r = 0; *c = 0;
    while (b!=a+rows*cols) {
        if (*b>m) {
            m = *b;
            *r = (b-a)/cols;
            *c = (b-a)%cols;
        }
        b++;
    }
}


//冒泡排序
void Sort(int *a, int size) {
    int t;
    for (int i=0;i<size-2;i++) {
        for (int j=0;j<size-1-i;j++) {
            if (*(a+j) >*(a+j+1)) {
                t = *(a+j);
                *(a+j) = *(a+j+1);
                *(a+j+1) = t;
            }
        }
    }
}

void Display(int *a, int rows, int cols) {
  cout << "--------------------------" << endl;
  for (int i=0;i<rows;i++) {
    for (int j=0;j<cols;j++) {
        cout << *(a+i*rows+j) << " ";
    }
    cout << endl;
  }
  cout << "--------------------------" << endl;
}

int main() {
  int a[6][6], row, col;
  Input((int*)a, 6);
  Display((int*)a, 6, 6);

  cout << "平均值:" << Average((int*)a, 6*6) << endl;
  Max((int*)a, 6, 6, &row, &col);
  cout << "最大值:" << a[row][col] << ", 所在行:" << row << ",列:" << col << endl;
  Sort((int*)a, 6*6);
  Display((int*)a, 6, 6);
  return 0;
}

温馨提示:答案为网友推荐,仅供参考