思路:首先要明白怎么去遍历二维数组,怎么去将二维数组中的元素进行比较;
其次要知道二维数组是怎么进行排列的;
重点:此方法中最大值的赋值,其实就是两个元素的比较与互换,只不过是从a[0][0]开始,依次与塔后面一个元素进行比较
行指针说明:
行指针一般用于二维数组中,指向每行元素的首地址;
定义形式:int (*p) [4] ;
表示方法: 首先p是一个指向长度为4的数组的指针,直接在p上偏移就是行,在*p上偏移就是列
#include <stdio.h>
int main()
{
int a[3][4], max = 0, x = 0, y = 0;
int(*p)[4] = a;
printf("请输入一个三行四列的矩阵数据,每个数之间使用空格隔开");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++) // 输入数据
{
scanf("%d", &*(*(p + i) + j));
}
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
if (max == *(*(p + i) + j)) // 如果最大值不止一个则不对x与y的值进行改变
{
x = x;
y = y;
}
else if (max < *(*(p + i) + j)) // 如果当前是最大值则赋值max并且将位置改变传递给x和y
{
max = *(*(p + i) + j);
x = j;
y = i;
}
}
}
printf("最大值为%d 在第%d行 第%d列", max, y, x);
return 0;
}