实现矩阵的加法

试编写实现矩阵C = A + B操作的函数,其中矩阵A,B,C的行/列维数均为n。编写一个测试主函数,要求:存储矩阵元素的二维数组采用动态二维数组


题目分析:

实现矩阵的加法,so easy!!!
往后读着,血压渐渐升高,动态二维数组,我滴吗呀
在我们平常使用的数组一般都是静态的,数组不能变化的,定义成什么样子就是什么样子,而动态数组就不一样了,动态数组是利用指针,比如你定义了一个动态数组,当数组内存不够的时候,我们可以申请一块新的比原来大的内存空间,将数组名字指向这个新空间,这样就实现了数组内存变大。因此动态数组就不用担心内存空间不足。

考点:

1.动态数组的运用
2.矩阵的加法


代码实现:

#include<stdio.h>
#include<stdlib.h>
/*输入矩阵的数据元素,返回二维数组*/
int **intput(int **arr,int n)
{
    for (int i = 0; i < n; i++)
        arr[i] = (int *)calloc(n, sizeof(int)); //为二维数组中的多个一维数组分配内存空间
    printf("请输入%d个数作为矩阵的元素:\n", n*n);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            scanf_s("%d", &arr[i][j]);
    return arr;
}
/*计算A+B,将B对应位置的数据加到A上,结果返回A*/
int **caculate(int **A, int **B,int n)
{
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            A[i][j] += B[i][j];
    return A;
}
/*输出矩阵*/
void output(int **arr,int n)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            printf("%3d ", arr[i][j]);
        printf("\n");
    }
}
int main()
{
    int n;
    printf("请输入矩阵的维数:");
    scanf_s("%d", &n);
    int **A = (int **)calloc(n, sizeof(int));  //A指向一个二维数组的空间,这个二维数组看成多个一维数组组成
    int **B = (int **)calloc(n, sizeof(int));
    int **C = (int **)calloc(n, sizeof(int));
    printf("\n\n创建矩阵A:\n\n");
    A = intput(A, n);
    printf("\n\n创建矩阵B:\n\n");
    B = intput(B, n);
    printf("\n\nA+B的结果C为:\n");
    C = caculate(A, B, n);
    output(C, n);           //输出结果矩阵
    system("pause");
    return 0;
}

运行结果:


测试一

img


测试二

img



代码编译器:Visual Studio 2017
ok,再见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值