刷题记录7
寻找矩阵最值
题目描述
输入一个正整数n (1≤ n ≤6),再输入一个n 行n列的矩阵,找出该矩阵中值最大的元素以及它所在的行和列。
输入
n
nxn
输出
数 行 列
代码
#include<stdio.h>
#define N 7//因为n最大为6,定义N为7符合题意
int main()
{
int n,max;
int i,j;
int a[N][N];
int row,col;//定义变量
int(*p)[N];//定义指向一维数组的指针变量
p=a;//p指向二维数组的0行
max=a[0][0];
row=col=0;
scanf("%d",&n);//输入n的值
for(i=0;i<n;i++)//i代表行数
{
for(j=0;j<n;j++)//j代表列数
{
scanf("%d",&a[i][j]);//输入每行每列所对应的数
}
}
for(i=0;i<n;i++)//外循环控制行
for(j=0;j<n;j++)//内循环控制列
if(*(*(p+i)+j)>max)//如果a[i][j]大于max则将最值赋给他
{
max=*(*(p+i)+j);
row=i;
col=j;
}
printf("%d %d %d\n",max,row+1,col+1);
return 0;
}
心得:此程序使用了双重循环遍历二维数组元素,使用*((p+i)+j)的方式指向二维数组的某一个元素,(p+i)得到的是二维数组行的元素,(p+i)+j相当于a[i]+j,(*(p+i)+j)即可得到第i行j列的元素值。