问答题 1.  请编写函数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 2535 45"。
    注意:部分源程序如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
    试题程序:
    #include<stdio.h>
    void proc(int(*s)[10], int *b, int *n,int mm, int nn)
    {
    }
    void main()
    {
    int arr[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;
    int a[100]={0},n=0;
    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 Aarray: \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列的二维数组中的数据,按行的顺序依次放到一维数组中,可以首先通过行循环,然后通过列循环取出二维数组中的每一个元素,并将其放入一维数组中,最后,将一维数组的长度通过形参返回给主函数。