将一维整型数组a的12个元素保存到4×3的二维数组b中 按4行3列输出b中各元素的值 2 从二维数

将一维整型数组a的12个元素保存到4×3的二维数组b中 按4行3列输出b中各元素的值 2 从二维数组b中查找出最大的元素值 输出该值及行下标和列下标e

#include"stdio.h"

void find(int *n,int k);

int main()

{

int i=0,j=0,a[12]={32,17,4,13,541,14,45,145,41,46,42,24},b[4][3]={0},*s=b[0];

for(i;i<12;i++)

{

b[i/3][i%3]=a[i];

}

printf("the array member as bellow:\n");

for(i=0;i<12;i++)

i%3==2?printf("%d\n",*(s+i)):printf("%d\t",*(s+i));;

}

find(s,12);

return 0;

}

void find(int *n,int k)//*n表示二维数组的第一个数的地址这里是b[0][0]地址,k表示数组中有多少数

{

    int temp=0,*p=n,q=k;

char flag=1;

while(k--)

{

(*p>=temp)? temp=(*p),flag=q-k-1:1;

p++;

}

printf("\nthe max number at :row=%d,line=%d\n",flag/3,flag%3);

}

运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15
如果你要输入数据,自己添加:
for (i=0;i<12;i++) scanf("%d",&a[i]); 就可以了。
a,b 元素一样多,所以用 memcpy 就把数据传过去了,快捷,便利。
m 记录最大值,mj 记录行号,mi记录列号。

完整程序如下:
#include<stdio.h>
main(){
int a[12]={1,2,3,4,5,6,7,28,9,10,11,12};
int b[4][3];
int i,j,m,mj,mi;

memcpy(&b[0][0],&a[0],sizeof(int)*12);
for (j=0;j<4;j++){
for (i=0;i<3;i++) printf("%d ",b[j][i]);
printf("\n");
}

m=b[0][0]; mj=0; mi=0;
for (j=0;j<4;j++)
for (i=0;i<3;i++){
if (b[j][i]>m) {m=b[j][i];mj=j;mi=i;}
}
printf("max is: b[%d][%d]=%d\n",m,b[mj][mi]);
return 0;
}本回答被提问者和网友采纳
第2个回答  2013-12-04
#include <stdio.h>

int main()
{
int i,j,a[12],b[4][3],max,x=0,y=0;
for(i=0;i<12;i++)
scanf("%d",&a[i]);
for(i=0;i<=12;i++)
b[i/3][i%3]=a[i];
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
printf("%d ",b[i][j]);
printf("\n");
}
max=b[0][0];
for(i=0;i<4;i++)
for(j=0;j<3;j++)
if(b[i][j]>max)
{
max=b[i][j];
x=i;
y=j;
}
printf("最大数%d %d行 %d列",max,x,y);
}