C语言编写能加减乘矩阵的程序

来源:互联网 发布:孤岛危机2优化补丁 编辑:程序博客网 时间:2024/05/29 21:36

C语言编写能加减乘矩阵的程序

学弟的小练习

#include "stdafx.h"#include<stdlib.h>#include <stdio.h>//新建int **newArr(int X, int Y) {    int **p, i;    p = (int **)malloc(X * sizeof(int *));    for (i = 0; i < X; i++) {        p[i] = (int *)malloc(Y * sizeof(int));    }    return p;}//释放内存void deleteArr(int **p, int X) {    int i;    for (i = 0; i < X; i++)        free(p[i]);     free(p);}//计算矩阵相加    参数1:矩阵A 参数2:矩阵B 参数3:矩阵行数,列数int **addArr(int **A, int **B,int X,int Y){    int **p, i,j;    p = (int **)malloc(X * sizeof(int *));      for (i = 0; i < X; i++)             p[i] = (int *)malloc(Y * sizeof(int));    for (i = 0; i < X; i++)    {        for (j = 0; j < Y; j++)            p[i][j] = A[i][j] + B[i][j];            }    return p;}//计算矩阵相减    参数1:矩阵A 参数2:矩阵B 参数3:矩阵行数,列数int **subArr(int **A, int **B, int X, int Y){    int **p, i, j;    p = (int **)malloc(X * sizeof(int *));    for (i = 0; i < X; i++)        p[i] = (int *)malloc(Y * sizeof(int));    for (i = 0; i < X; i++)    {        for (j = 0; j < Y; j++)            p[i][j] = A[i][j] - B[i][j];    }    return p;}//计算矩阵相乘    参数1:矩阵A 参数2:矩阵B 参数3,4,5,6:矩阵行数,列数int **multiplyArr(int **A, int **B, int aX, int aY, int bX, int bY){    //A[aX][aY] * B[bX][bY] =C[aX][bY]    int **p, i,j,k;    p = (int **)malloc(aX * sizeof(int *));    for (i = 0; i < aX; i++)        p[i] = (int *)malloc(bY * sizeof(int));    for (i = 0; i < aX; i++)    {        for (j = 0; j < bY; j++)        {            p[i][j] = 0;        }    }    for (i = 0; i<aX; i++)     {        for (j = 0; j<bY; j++)         {            for (k = 0; k<aY; k++)             {                p[i][j] += A[i][k] * B[k][j];            }        }    }    return p;}//打印矩阵  参数1:矩阵  参数2,3:矩阵行数,列数void printArr(int **arr,  int X, int Y){    int i, j;    printf("输出矩阵开始:\n");    for (i = 0; i < X; i++) {        for (j = 0; j < Y; j++) {            printf(" %5d", arr[i][j]);        }        printf("\n");    }    printf("输出矩阵结束:\n");}void main(){    int **aArr, **bArr, i, j, aX, aY, bX, bY;    printf("输入矩阵A的行数:\n");    scanf("%d", &aX);    printf("输入矩阵A的列数:\n");    scanf("%d", &aY);    printf("输入A矩阵:\n");    aArr = newArr(aX, aY);    for (i = 0; i < aX; i++) {        for (j = 0; j < aY; j++) {            scanf("%d", &aArr[i][j]);        }    }    printf("输入矩阵B的行数:\n");    scanf("%d", &bX);    printf("输入矩阵B的列数:\n");    scanf("%d", &bY);    printf("输入B矩阵:\n");    bArr = newArr(bX, bY);    for (i = 0; i < bX; i++)    {        for (j = 0; j < bY; j++)            scanf("%d", &bArr[i][j]);    }    //打印 A,B 矩阵    printArr(aArr, aX, aY);    printArr(bArr, bX, bY);    //计算    //判断是否能进行加减运算    if (aX==bX&&aY==bY)    {        printf("矩阵A,B可进行加减运算\n");        //矩阵相加        int **resultAdd = addArr(aArr, bArr, aX, aY);        //打印矩阵相加结果        printArr(resultAdd, aX, aY);        //释放内存        deleteArr(resultAdd, aX);        //矩阵相减        int **resultSub = subArr(aArr, bArr, aX, aY);        //打印矩阵相减结果        printArr(resultSub, aX, aY);        //释放内存        deleteArr(resultSub, aX);    }    else    {        printf("矩阵A,B不可进行加减运算\n");    }    //判断是否能进行乘法运算    if (aY==bX)    {        printf("矩阵A,B可进行乘法运算\n");        int **resultMultiply = multiplyArr(aArr, bArr, aX, aY,bX,bY);        //打印矩阵相减结果        printArr(resultMultiply, aX, bY);        //释放内存        deleteArr(resultMultiply, aX);    }    else    {        printf("矩阵A,B不可进行乘法运算\n");      }    //释放内存    deleteArr(aArr, aX);    deleteArr(bArr, bX);}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怎么挑一只好的土狗 钢齿土狼 30如狼40如虎50坐地能吸土 土狼 女人30如狼40如虎50坐地能吸土 魂土玉林狼 土狼犬 钢齿土狼巡逻路线图 黑夜汉化组土狼弍3厘米成瘾者 30如狼40如虎50坐地能吸土60 广西土猎 土猎 土茯苓猪骨汤 壹号土猪 土猪 一号土猪 祛湿汤土茯苓猪骨汤 土猪图片 土伏苓煲猪骨汤 2019土猪几份生好 土猪养殖技术 壹号土猪价格表 土猪汤 土猪的养殖技术 今日土杂猪生猪价格 土猪苗价格 土杂猪价格今日猪价 土猪多少钱 土花猪养殖 猪反复拉稀用土霉素可以吗 2019年土猪命取什么名字好 土黑猪 土猪棋牌 陆川土猪报价 土杂猪价格 一号土猪千万不要承包 土黑猪养殖 壹号土猪价格 土猪价格 放养土猪 土杂猪