请编写函数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();
}
解题思路:
本题是把二维数组中的数据按行存放到一维数组中。
1. 计算存放到一维数组中的位置。
2. 取出二维数组中的数据存放到一维数组(已计算出的位置)中。
参考答案:
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;
}
更多关注: