问答题
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列的二维数组中的数据,按行的顺序依次放到一维数组中,可以首先通过行循环,然后通过列循环取出二维数组中的每一个元素,并将其放入一维数组中,最后,将一维数组的长度通过形参返回给主函数。