本範例要求使用二維陣列將一個 3×4 的矩陣中所有元素的最大值及其下標獲取,通過該程式,掌握二維陣列的參照知識。
演算法思想
針對本範例,有兩個步驟需要編寫程式完成:第一個步驟是求矩陣元素的最大值,可以通過相鄰的元素大小比較,最終獲取最大值;第二個步驟是針對獲取到的元素最大值,求該元素的下標。
二維陣列元素的一般表示方法為:“陣列名[下標][下標]”。對於二維陣列,下標變數和陣列說明在表示形式上是一樣的,比如在本例中,有語句:int a[3][4]; a[3][4]=2/3;
上述語句中“a[3][4]”是完全不同的兩個概念,第一個語句中的“a[3][4]”用來定義一個陣列,而第二個語句中的“a[3][4]”是一個雙下標變數。
程式程式碼
#include <stdio.h>
int main()
{
int a[3][4],i,j,max,max_i=0,max_j=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max)
{
max=a[i][j];
max_i=i;
max_j=j;
}
printf("max=a[%d][%d]=%dn",max_i,max_j,max);
return 0;
}
偵錯執行結果
本實訓的程式主要完成了兩個功能:一是通過一個二次迴圈輸入該二維陣列的所有元素;二是將輸入元素按照相鄰關係進行比較,最終得到最大值和這個最大值的下標。如果輸入陣列是:1 2 3 4 5 6 7 99 9 10 11 12。則最終輸出結果如下所示:
1 2 3 4 5 6 7 99 9 10 11 12
max=a[1][3]=99