问答题 请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据, 按列的顺序依次放到一维数组中。函数fun中给出的语句仅供参考。 例如, 二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中的内容应是: 33 44 55 33 44 55 33 44 55 33 44 55。 注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include void fun(int s[][10], int b[], int *n, int mm, int nn) { /* 以下代码仅供参考 */ int i,j,np=0; /* np用作b数组下标 */ *n=np; } main() { int w[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("=",w[i][j]); printf("/n"); } fun(w,a,&n,3,4); printf("The A array:/n"); for(i=0;i NONO(); }
【正确答案】void fun(int (*s)[10], int *b, int *n, int mm, int nn) { /* 以下代码仅供参考 */ int i,j,np=0; /* np用作b数组下标 */ for(i = 0 ; i < nn ; i++) for(j = 0 ; j < mm ; j++) { b[np] = s[j][i] ; np = i * mm + j + 1; } *n=np; }
【答案解析】解题思路: 本题是把二维数组中的数据按行存放到一维数组中。 1. 计算存放到一维数组中的位置。 2. 取出二维数组中的数据存放到一维数组(已计算出的位置)中。