我想从输入中获取整数二维数组的最大元素。
#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
为什么最大数字显示为奇怪的数字
上面的所有注释都是有效的,并反映在下面的代码中。我给你提供解决方案并不是为了给你答案,而是为了向你展示一些首选的编码实践,正如你所说,你是一名学生,并且建议你尽早学习编码风格。特别注意我大量使用空格,这使得代码更容易阅读。
(我还预先定义了你的矩阵,这样我就不必手动输入所有数字;你可以撤消此操作。)
#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;
}