请编写函数fun(),该函数的功能是将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。 例如:二维数组中的数据为 33333333 44444444 55555555 则一维数组中的内容应是 334455334

admin2010-02-08  20

问题 请编写函数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 [j];
             cout<<endl;
           }
         fun(w,  a,  &n,  3,  4);
         cout<<"The A array:\n";
         for(i=0;  i<n;  i++)
         cout<<a;
         cout<<"\n\n";
       }

选项

答案void fun (int(*s)[10],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+1; } }

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

最新回复(0)