问题 问答题

请编写函数fun(),该函数的功能是将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
例如:二维数组中的数据为
33333333
44444444
55555555
则一维数组中的内容应是
334455334455334455334455。
注意:部分源程序以存在文件test_2.cpp中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
文件test39_2.cpp的内容如下:
#include<stdio.h>
#include<iostream.h>
void fun(int(*s) [10],int *b, int *n,int mm,int nn)


void 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;
cout<<"The matrix:\n"
for(i=0; i<3; i++)

for(j=0; j<4; j++
cout<<w[i] [j];
cout<<endl;

fun(w, a, &n, 3, 4);
cout<<"The A array:\n";
for(i=0; i<n; i++)
cout<<a[i];
cout<<"\n\n";

答案

参考答案:

void fun (int(*s)[A0],int *b, int *n, int mm, int nn)

{

int i,j;

for(j=0;j<nn;j++)

for(i=0;i<mm;i++)

{b[*n]=*(*(s+i)+j);*n=*n+A; }

}

解析:

一个二维数组的存储可以理解为按行进行存储的—个—维数组,但本题中的二维数组要求按列进行存储。根据在主函数中的调用情况,可以看出,指针数组s[10]实质上是用来存放二维数组中各行的首地址,b是用来存放最终二维数组按列处理完毕后的一个一维数组,第3个参数之所以要用“&n”,目的是为了能在函数中直接改变其值。

单项选择题
单项选择题