解题思路:
1.利用二维指针取生成二维数组;
2. 申请行数个一维指针大小空间,并赋值给二维指针;
3.对于每个一维指,申请列数个元素的空间,并赋值给对应的一维指针。
注意事项:
记得申请完毕要先后释放指针上的内存哦!
参考代码:
#include<stdio.h>
#include <stdlib.h> //包含动态内存分配函数
int main()
{
int **p; //定义二维指针p
int n,i,j,r,c,temp;
scanf("%d",&n);
if(n<=0 || n>6) return -1; //行数或列数非法
p=(int **)malloc(sizeof(int *)*n); //申请一组一维指针空间
for(i=0;i<n;i++)
{
p[i]=(int *)malloc(sizeof(int)*n); //对于每个一维指针,申请一行数据的空间
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&p[i][j]); //输入第i行第j列的数据。其中&p[i][j]也可以写作p[i]+j或者是 *(p+i) + j
}
}
temp=p[0][0];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(p[i][j]>temp)
{
temp=p[i][j]; //利用for循环去得到所得的数组中的最大值,并记录其下标
r=i,c=j;
}
}
}
for(i=0;i<n;i+=1)
free(p[i]); //逐个释放一维指针上的内存。
free(p); //释放二维指针上的内存。
printf("%d %d %d",temp,r+1,c+1); //按照题目要求是说明是第几行和第几列,而不是实际矩阵下标
return 0;
}
0.0分
5 人评分