答案:
#include<stdio.h>
int main()
{
int m = 0, n = 0, i = 0, j = 0;
int arr[100][100] = { 0 };
int max = 0, min = 0;
scanf("%d%d", &m, &n); //输入mn的值,m代表行,n代表列
if (m > 0 && n > 0) //使mn的值符合题意
{
for (i = 0; i < m; i++) //这次循环用来输入存储,先进入行的循环
{
for (j = 0; j < n; j++) //再进入列的循环
{
scanf("%d", &arr[i][j]); //输入整数存给该数组第i行第j列
}
} //循环完代表所有值都存在数组里面了
max = min = arr[0][0]; //令数组的第一个值为最大值和最小值
for (i = 0; i < m; i++) //这次循环用来一个一个比较出最大值和最小值
{
for (j = 0; j < n; j++)
{
if (arr[i][j] > max) //该值若大于原来的max值就成为新的max
{
max = arr[i][j];
}
if (arr[i][j] < min) //该值若小于原来的min值就成为新的min
{
min = arr[i][j];
}
}
}
printf("%d %d", max, min); //打印最大值和最小值
}
return 0;
}
知识点:
1.二维数组的输入,比较,打印等一系列操作基本都是通过二重循环来实现。
2.scanf("%d",&arr[i][j]);这里的&不能省略,虽然数组arr可以作为地址,能省略&,但是能省略的只能是数组名arr,例如scanf("%d",arr);这样就可以。如果后面是arr[i][j],其并非数组名,而是数组的某一个空间,则必须用&