首先输入一个大于2且小于10的整数m 和n,然后定义一个二维整形数组(m*n),初始化该数组,将该数组中最大元素所在的行和最小元素所在行对调。

2、首先输入一个大于2且小于10的整数m 和n,然后定义一个二维整形数组(mn),初始化该数组,将该数组中最大元素所在的行和最小元素所在行对调。
要求:
(1)m
n数组元素的值由scanf函数从键盘输入(假定最大值和最小值不在同一行),然后输出该数组;
(2)查找最大值最小值所在行,将两行元素对调后输出新的数组;
(3)为直观起见,数组按照m行n列的方式输出;
(4)假设最大值最小最出现在同一行上,请修改程序。
Void main()(部分参考代码)
{int martix[9][9],min,max,temp;
int i,j,m,n,nMax=0,nMin=0;
printf(“please input m and n of martix:\n”);
scanf(......);
......}

#include<stdio.h>
int main()
{
    int m, n, i, j, z, max, min, nmax;
    printf("请输入两个大于2且小于10的整数\n");
    scanf_s("%d%d", &m, &n);
    z = m * n;
    printf("请输入%d个整数,注意最大值和最小值应该在同一行\n", z);
    int a[9][9];
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf_s("%d", &a[i][j]);
        }
    }
    printf("该数组为:\n");
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            printf("%d\t", a[i][j]);
        }
        printf("\n");
    }
    max = a[0][0];
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            if (max <= a[i][j])
            {
                max = a[i][j];
                nmax = i + 1;
            }
        }
    }
    printf("最大值和最小值都在第%d行", nmax);
    return 0;
}

以下是题目所需的完整程序:



#include <stdio.h>

void swap(int arr[][9], int i, int j)
{
    for (int k = 0; k < 9; k++) {
        int temp = arr[i][k];
        arr[i][k] = arr[j][k];
        arr[j][k] = temp;
    }
}

int main()
{
    int m, n;
    printf("Please input m and n of matrix (2 < m, n < 10):\n");
    scanf("%d %d", &m, &n);

    int matrix[9][9];
    int min = 10000, max = -10000;

    // Input and find min/max element
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &matrix[i][j]);
            if (matrix[i][j] < min) {
                min = matrix[i][j];
                nMin = i;
            }
            if (matrix[i][j] > max) {
                max = matrix[i][j];
                nMax = i;
            }
        }
    }

    printf("Input matrix:\n");
    // Output matrix
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    // Swap rows if min and max are not in the same row
    if (nMin != nMax) {
        swap(matrix, nMin, nMax);
        printf("Swapped matrix:\n");
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                printf("%d ", matrix[i][j]);
            }
            printf("\n");
        }
    } else {
        printf("Cannot swap matrix.\n");
    }

    return 0;
}

程序中使用了一个辅助函数 swap 来交换数组的两行,其余代码按照题目所需的要求依次实现。注意,题目中输入的 m 和 n 为整数,而数组的维度不能直接用变量表示,因此程序中数组的维度为 9*9,超过输入的 m 和 n 的部分没有被使用。此外,程序假设了最大值和最小值不在同一行上,因此在处理该情况时需要先进行检查,如果在同一行上则直接输出“Cannot swap matrix.”。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^