将一维整型数组a的12个元素保存到4×3的二维数组b中 按4行3列输出b中各元素的值 2 从二维数
#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);
}
运行结果:
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;
}
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);
}