获取二维数组的最大元素

问题描述 投票:0回答:1

任务

我想从输入中获取整数二维数组的最大元素。

我的代码

#include<stdio.h>
int main(void)
{
    printf("Input m, n:");
    int m,n;
    int max=0;
    scanf("%d,%d",&m,&n);
    int s[m][n];
    printf("Input %d*%d array: \n",m,n);
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            scanf("%d",&s[i][j]);
        }
    }
    int row,col;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(s[i][j]>max){
                max=s[i][j];
                row=i;
                col=j;
            }

        }
    }
    printf("max=%d, row=%d, col=%d",max,row,col);

    return 0;
}

测试案例

// input
5,5
1 2 3 4 5
4 5 6 100 2
3 2 1 5 6
1 2 3 5 4
3 5 6 4 8
// output
Input m, n:Input 5*5 array: 
max=1717518952, row=5, col=3

期望什么:

Input m, n:Input 5*5 array:
max=100, row=2, col=4

为什么最大数字显示为奇怪的数字

arrays c overflow
1个回答
0
投票

上面的所有注释都是有效的,并反映在下面的代码中。我给你提供解决方案并不是为了给你答案,而是为了向你展示一些首选的编码实践,正如你所说,你是一名学生,并且建议你尽早学习编码风格。特别注意我大量使用空格,这使得代码更容易阅读。

(我还预先定义了你的矩阵,这样我就不必手动输入所有数字;你可以撤消此操作。)

#include <limits.h>
#include <stdio.h>

int main(void)
{
#define NBR_ROWS 5
#define NBR_COLUMNS 5

    const int matrix[NBR_ROWS][NBR_COLUMNS] = {
        { 1, 2, 3, 4, 5},
        { 4, 5, 6, 100, 2 },
        { 3, 2, 1, 5, 6 },
        { 1, 2, 3, 5, 4 },
        { 3, 5, 6, 4, 8 }
    };
    int max = INT_MIN;
    int row;
    int col;

    for (int i = 0; i < NBR_ROWS; i++){
        for (int j = 0; j < NBR_COLUMNS; j++) {
            if (matrix[i][j] > max) {
                max = matrix[i][j];
                row = i;
                col = j;
            }
        }
    }
    printf("max=%d, row=%d, col=%d", max, row, col);

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.