指向一维数组的指针变量即二维数组的行指针作为函数参数,实现矩阵转置。按如下函数原型编程计算并输出m×n阶矩阵的转置矩阵。其中,m和n的值由用户从键盘输入。已

#include <stdio.h>
#include <stdlib.h>
#define N 10
#define M 10


void InputMatrix(int (*a)[N], int m, int n);
void Transpose(int (*a)[N], int (*at)[M], int m, int n);
void PrintMatrix(int (*at)[M], int n, int m);

int main()
{
    int m,n;
    int a[10][10];
    int at[10][10];
    printf("Input m, n:");
    scanf("%d,%d",&m,&n);
    printf("Input %d*%d matrix:\n",m,n);
    InputMatrix(a,m,n);
    Transpose(a,at,m,n);
    printf("The transposed matrix is:\n");
    PrintMatrix(at,n,m);
}

void InputMatrix(int (*a)[N], int m, int n)
{
    int i,j;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
}

void Transpose(int (*a)[N], int (*at)[M], int m, int n)
{
    int i,j;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            at[j][i]=a[i][j];
        }
    }
}

void PrintMatrix(int (*at)[M], int n, int m)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d\t",at[i][j]);
        }
        printf("\n");
    }
}
用指向一维数组的指针变量即二维数组的行指针作为函数参数,实现矩阵转置。按如下函数原型编程计算并输出m×n阶矩阵的转置矩阵。其中,m和n的值由用户从键盘输入。已知m和n的值都不超过10。
void Transpose(int (*a)[N], int (*at)[M], int m, int n);
void InputMatrix(int (*a)[N], int m, int n);
void PrintMatrix(int (*at)[M], int n, int m);
输入提示信息:"Input m, n:"
输入格式:"%d,%d"
输入提示信息:"Input %d*%d matrix:\n"
输出提示信息和格式:"The transposed matrix is:\n"
输出格式:"%d\t"
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
题目要求编写一个函数计算任意数的二维数组的和,其中使用指向一维数组指针变量作为函数参数。 我们可以使用两个指针实现这个功能。第一个指针指向二维数组的首,第二个指针用于遍历每一的元素。通过遍历每一的元素,并将其加到总和中,最后返回总和即可。 具体的代码如下所示: ``` C++ #include<iostream> using namespace std; int sum(int* arr[], int rows, int cols) { int totalSum = 0; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { totalSum += arr[i][j]; } } return totalSum; } int main() { int rows, cols; cout << "请输入二维数组数和列数:" << endl; cin >> rows >> cols; int** arr = new int*[rows]; for (int i = 0; i < rows; i++) { arr[i] = new int[cols]; } cout << "请依次输入二维数组的元素:" << endl; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { cin >> arr[i][j]; } } int result = sum(arr, rows, cols); cout << "二维数组所有元素的和为:" << result << endl; // 释放内存 for (int i = 0; i < rows; i++) { delete[] arr[i]; } delete[] arr; return 0; } ``` 这段代码中,我们首先通过 `new` 关键字创建了一个 `rows` `cols` 列的二维数组 `arr`。然后,我们使用嵌套循环遍历数组的每一个元素,将其累加到 `totalSum` 变量中。最后,我们返回总和。 在 `main` 函数中,我们首先获取用户输入的二维数组数和列数,然后依次输入每个元素。接着,我们调用 `sum` 函数计算二维数组所有元素的和,并将结果输出。 最后,我们需要记得在程序结束后释放动态分配的内存,以避免内存泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值