练习3-元素最大值

题目

有一个3*4矩阵,数据为{1, 2, 3, 4}, {9, 8, 7, 6}, {-10, 10, -5, 2},编写程序,通过比较输出最大元素的值及其所在的行标和列标。

解题步骤

(1)理解 3 * 4 矩阵;
(2)循环求最大值;
(3)保存行列标;
(4)输出;

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Demo {
public static void main(String[] args) {
int[][] array = {{1, 2, 3, 4}, {9, 8, 7, 6}, {-10, 10, -5, 2}};
int i, j, Max = array[0][0], x = 0, y = 0;
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
if (array[i][j] > Max) {
Max = array[i][j];
x = i;
y = j;
}
}
}
System.out.println("Max=" + Max);
System.out.println("array index:" + "[" + x + "]" + "[" + y + "]");
}
}

说明

注意区分Java语言中三种数组初始化的方式:

1
2
3
4
5
array=new type[][]{值 1,值 2,值 3,…,值 n};

array=new type[][]{new 构造方法(参数列表),…};

type[][]array={{第1行第1列的值,第1行第2列的值,…},{第2行第1列的值,第2行第2列的值,…},…};

C语言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main(){
int array[][4]={1,2,3,4,9,8,7,6,-10,10,-5,2},i,j,Max=array[0][0],x,y;
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(array[i][j]>Max){
Max=array[i][j];
x=i;
y=j;
}
}
}
printf("Max=%d\n",Max);
printf("array index:[%d][%d]",x,y);
return 0;
}

说明

重在如何保存下标,循环的确是每个数据都进行比较,但是,若队列后面的数据不满足array[i][j]>Max条件的话,也不会保存它们的下标。所以,直接在循环中增加赋值,以起到保留最大值下标的效果。