题目
有一个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
条件的话,也不会保存它们的下标。所以,直接在循环中增加赋值,以起到保留最大值下标的效果。