求矩阵的最大值。输入两个正整数m和n(m>=1,n<=6),再输入1个m*n的矩阵,找出最大值以及它的行下标和列下标。假设最大值唯一。
用一个二维数组存放矩阵中的元素,数组的行长度和列长度在定义时必须确定,本题中因为m,n<=6,则行长度和列长度都取上限6。
如果用变量row和col分别记录最大值的行下标和列下标,则最大值就是a[row][col]。
//找出矩阵中的最大值及其行下标和列下标
#include<stdio.h>
#define MAXN 6 //定义符号常量MAXN
#define MAXN 6
int main()
{
int col,i,j,m,n,row;
int a[MAXN][MAXN];
printf("Enter m,n:");//提示输入m和n
scanf("%d%d",&m,&n);
//将输入的数存入二维数组
printf("Enter %d integers:\n",m*n);//提示输入m*n个数
//输入矩阵:按照先行后列的顺序
for(i=0;i<m;i++){ //行下标是外循环的循环变量
for(j=0;j<n;j++){ //列下标是内循环的循环变量
scanf("%d",&a[i][j]);//输入数组元素
}
}
//遍历二维数组,找到最大值a[row][col]
row=col=0; //先假设a[0][0]是最大值
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(a[i][j]>a[row][col]){//如果a[i][j]比假设值大
row=i;//再假设a[i][j]是新的最大值
col=j;
}
}
}
printf("max=a[%d][%d]=%d\n",row,col,a[row][col]);
return 0;
}
本文摘自何钦铭《C语言程序设计》第4版