qq_45735316
2020-04-08 10:59
采纳率: 91.6%
浏览 812

二维数组列数由用户输入,该怎样在定义函数时传入二维数组作为函数参数?

图片说明
编写一个矩阵转置函数,矩阵的行数和列数在程序中由用户输入

#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void  matrixTranspose(int (*a)[cols],int rows,int cols)    //矩阵转置函数
/*二维数组作为函数参数必须将列数写入形式参数中,
二维数组的作为函数参数的传入方法:
1.int sum_arr(int a[N][N],int size)size的值是行数,二维数组可以看作是
元素为数组的一维数组
example:C++.P207 
2.int sum_arr(int (*a)[cols],int size)
两种方法函数中调用都要用a[i][j] 
数组的长度也要作为参数传入,不在函数的内部定义大小*/ 
{
    int b[N][N]={0};
    int i=0,j=0;
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            b[j][i]=a[i][j];
        }
    }
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            a[i][j]=b[i][j];
        }
    }
    cout<<"转置后的矩阵"<<endl; 
    for(i=0;i<rows;i++)
    {
        for(j=0;j<cols;j++)
        {
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
 }  
int main(int argc, char** argv) {
    int rows=0,cols=0;
    int i=0,j=0;
    cout<<"请输入行数和列数"<<endl;
    cin>>rows>>cols;
    int a[rows][cols]={0};
    cout<<"请输入矩阵元素"<<endl; 
    for(i=0;i<rows;i++)
    {
        for(j=0;j<cols;j++)
        {
            cin>>a[i][j];
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
     } 
    matrixTranspose(a,rows,cols);
    return 0;
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 小学狗喵喵叫 2020-04-08 11:53
    已采纳
    void matrixTranspose(int **a,int n)
    {
        int *b = new int[n];
        for (int i = 0; i < n; i++)
        {
            b[i] = (int)a[i];
        }
        for (int i = 0; i < n; i++)
        {
            a[i] = (int*)b[n - i - 1];
        }
        delete[]b;
    }
    
    int main()
    {
    ...
    matrixTranspose((int**)a3, rows*cols);
    ...
    }
    
    
    点赞 评论

相关推荐 更多相似问题