请编写函数proc 该函数的功能是:将M行N列的二维数组中的数据 按行的顺序依次放到一维数组
问题详情
请编写函数proc,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。 例如,若二维数组中的数据为 13 23 33 43 14 24 34 44 15 25 35 45 则一维数组中的内容应该是13 23 33 43 14 24 34 44 15 25 35 45。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。 试题程序: include<stdio.h> void proc(int(*s)[103,int*b,int*n,int rain.int nn) {
} void main { int arr[10][10]={{33,33,33,33),{44,44,44,44}, {55,55,55,55}),i,j; int a[l00]={o),n=o; printf("The matrix:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%3d",arr[i][j]): printf("\n"); } proc(arr,a,&n,3,4): printf("The A array:\n"); for(i=0;i<n;i++) printf("%3d",a[i]): printf("\n\n"); } 请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:
void proc(int(*s)[10],int*b,int*n,int mm,int nn)
{
int i,j,k=0;
for(i=0;i<mm;i++)//i是表示其行的下标
for(j=0;j<nn;j++)//j是表示其列的下标
b[k++]=s[i][j]; //把其放到b的一维数组中
*n=k; //把b数组的长度通过形参n传回到主函数中
}
【解析】要将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,可以通过首先行循环,然后列循环取出二维数组中的每一个元素,并将其放入一维数组中。最后,将一维数组的长度通过形参返回到主函数当中。