第1个回答 2011-04-30
楼主,其实二维数组在内存中是按一维数组存储的,用指针的话,可以当成顺序存储的3*4=12个元素的一维数组来对待。下面是C语言代码:
/*---------指针实现:找出二维数组(设3行4列)中的最大数及其位置--------*/
#include<stdio.h>
void main()
{
int i=0, j, large, array[3][4], *p=&array[0][0]; /* p是数组的指针,
large是最大数,
j 是最大数的位置 */
printf("Please input data:\n"); /* 输入数据 */
while(i++<12) { /* 用指针p实现数据输入 */
scanf("%d", p++);
}
i=0,j=0; /* 数据归零 */
p=&array[0][0];
while(i<12) { /* 找出最大数,并记下位置给 j */
if(*p>large) {large=*p; j=i;}
p++;
i++; }
printf("%d,%d, %d\n", j/4, j%4, large); /* 计算出最大数位置并输出位置和最大数 */
}
第2个回答 2011-04-26
#include<stdio.h>
int main()
{
int a[3][4];
int i,j,m,n,max;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];m=n=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max)
{
max=a[i][j];
m=i;
n=j;
}
printf("%d %d %d\n",m,n,max);
return 0;
}
第3个回答 2011-04-26
C语言源代码:
#include<stdio.h>
void main()
{
int arr[3][4];
int i,j;
int maxI, maxJ;
int maxValue;
for(i=0; i<3; i++)
for(j=0; j<4; j++)
scanf("%d", &arr[i][j]);
maxValue = arr[0][0];
maxI = maxJ = 0;
for(i=0; i<3; i++)
for(j=0; j<4; j++)
if(*(*(arr+i)+j) > maxValue)
{
maxValue = *(*(arr+i)+j);
maxI = i;
maxJ = j;
}
printf("%d %d %d", maxI, maxJ, maxValue);
}
运行结果:
1 2 5 4
6 8 7 2
0 2 4 5
输出样例:
1 1 8本回答被提问者和网友采纳