精华内容
下载资源
问答
  • c语言矩阵相加
    2022-01-06 09:48:37
    #include<stdio.h>
    main()
    {
    	int i,j;
    	int a[3][5];
    	int b[3][5];
    	int c[3][5];
    	printf("请输入矩阵a:\n");
    	for(i=0;i<3;i++)
    	for(j=0;j<5;j++)
    	scanf("%d",&a[i][j]);
    	printf("请输入矩阵b:\n");
    	for(i=0;i<3;i++)
    	for(j=0;j<5;j++)
    	scanf("%d",&b[i][j]);
    	printf("输出结果\n");
    	for(i=0;i<3;i++)
    	{
    	for(j=0;j<5;j++)
    	printf("%d ",a[i][j]);
    	printf("\n");
        }
    	printf("+");
    	printf("\n");
    	for(i=0;i<3;i++)
    	{
    	for(j=0;j<5;j++)
    	printf("%d ",b[i][j]);
    	printf("\n");
        }
    	printf("=");
    	printf("\n");
    	for(i=0;i<3;i++)
    	for(j=0;j<5;j++)
    	c[i][j]=a[i][j]+b[i][j];
    	for(i=0;i<3;i++)
    	{
    	for(j=0;j<5;j++)
    	printf("%d ",c[i][j]);
        printf("\n");
    }
    }

    更多相关内容
  • C语言 矩阵相加,数乘

    万次阅读 2017-10-11 22:49:52
    现在来做一些现代里面的矩阵运算: ...实现两个矩阵相加 */ #include const int COLS=3; void printMatirx(int *pArray,int rows,int cols); void printMatirx2(int (*pArray)[COLS],int rows); int ma

    现在来做一些现代里面的矩阵运算:

    矩阵的加减运算,矩阵的数乘运算

    /**
    MatrixAddition.c
    实现两个矩阵相加
    
    */
    #include<stdio.h>
    const int COLS=3;
    void printMatirx(int *pArray,int rows,int cols);
    void printMatirx2(int (*pArray)[COLS],int rows);
    int main()
    {
        int A[3][4]={{15,10,9,12},
                     {18,14,8,7},
                     {16,13,6,11}};
        printf("矩阵A=\n");
        printMatirx(A,3,4);
        int B[3][4]={{4,3,5,2},
                     {0,9,6,1},
                     {5,7,2,6}};
        printf("矩阵B=\n");
        printMatirx(B,3,4);
        int C[3][4];
    
        int i,j;
        //矩阵相加:两个矩阵必须行数和列数一样才能相加,
        //和矩阵的每个元素分别是两个矩阵对应的元素的和
        printf("矩阵A+矩阵B=\n");
        for(i=0;i<3;i++)//控制行
        {
            for(j=0;j<4;j++)
            {
                C[i][j]=A[i][j]+B[i][j];
    //            printf("%3d",C[i][j]);//输出结果
            }
    //        printf("\n");
        }
        int (*p)[COLS]=C;
        printMatirx2(p,3);
    /*结果应为:
    19 13 14 14
    18 23 14  8
    21 20  8 17
    */
        printf("矩阵C-矩阵A=\n");
        for(i=0;i<3;i++)//控制行
        {
            for(j=0;j<4;j++)
            {
    
                printf("%3d",C[i][j]-A[i][j]);//输出结果
            }
            printf("\n");
        }
        /*结果应为:
        4  3  5  2
        0  9  6  1
        5  7  2  6
        */
        //矩阵数乘:
        int D[3][4];
        printf("矩阵D:\n");
        for(i=0;i<3;i++)//控制行
        {
            for(j=0;j<4;j++)
            {
                D[i][j]=1;
                printf("%d\t", D[i][j]);//输出结果
            }
            printf("\n");
        }
        int mul;
        printf("矩阵D数乘以:");
        scanf("%d",&mul);
        printf("矩阵D数乘以%d=\n",mul);
        for(i=0;i<3;i++)//控制行
        {
            for(j=0;j<4;j++)
            {
                D[i][j]=D[i][j]*mul;
                printf("%d\t", D[i][j]);//输出结果
            }
            printf("\n");
        }
        return 0;
    }
    //使用一级指针来访问二维数组
    void printMatirx(int *pArray,int rows,int cols)
    {
        int i;
        int j;
        for(i=0;i<rows;i++)
        {
            for(j=0;j< cols;j++)
            {
                printf("%d\t",*(pArray+i*cols+j));
            }
            printf("\n");
        }
    }
    //使用指向一维数组的指针,访问二维数组
    void printMatirx2(int (*pArray)[COLS],int rows)
    {
        int i,j;
        for(i=0;i<rows;i++)
        {
            for(j=0;j<COLS;j++)
            {
                printf("%d\t",pArray[i][j]);
                /*
                []运算符的结合方向是由左向右,pArray[1][2]就等价于(* (pArray + 1))[2],
                而由于pArray是数组指针,而且数组的长度为3,
                所以* (pArray + 1):表示跨过3个元素,而也就是到array第二行
                即表示array[1]这个数组,则pArray[1][2]则就完全等价于array[1][2]。
                */
            }
            printf("\n");
        }
    }
    
    结果:

    矩阵A=
    15      10      9       12
    18      14      8       7
    16      13      6       11
    矩阵B=
    4       3       5       2
    0       9       6       1
    5       7       2       6
    矩阵A+矩阵B=
    19      13      14
    14      18      23
    14      8       21
    矩阵C-矩阵A=
      4  3  5  2
      0  9  6  1
      5  7  2  6
    矩阵D:
    1       1       1       1
    1       1       1       1
    1       1       1       1
    矩阵D数乘以:666
    矩阵D数乘以666=
    666     666     666     666
    666     666     666     666
    666     666     666     666
    
    Process returned 0 (0x0)   execution time : 9.059 s
    Press any key to continue.
    


    展开全文
  • 满意答案#include/*m1和m2为两个相加的数组首元素地址,r和c为两个数组的行数和列数m用于存放结果。调用该函数时,要求m为有足够存储单元、能容纳运算结果的数组首元素地址*/void add(int *m,int *m1,int *m2,int r,...

    满意答案

    #include

    /*

    m1和m2为两个相加的数组首元素地址,r和c为两个数组的行数和列数

    m用于存放结果。

    调用该函数时,要求m为有足够存储单元、能容纳运算结果的数组首元素地址

    */

    void add(int *m,int *m1,int *m2,int r,int c);

    void sub(int *m,int *m1,int *m2,int r,int c);

    void mult(int *m,int *m1,int *m2,int r,int p,int c);

    void disp(int *m,int r,int c);

    void main()

    {

    int a[3][4]={{2,4,6,8},{1,3,5,7},{11,33,44,22}};

    int b[3][4]={{2,-4,6,-8},{-1,3,-5,7},{11,-33,-44,22}};

    int c[4][3]={{2,4,6},{1,3,5},{1,0,3},{0,2,4}};

    int d[3][4]={0};

    int e[3][3]={0};

    printf("\nA(3x4):\n");

    disp(a[0],3,4);

    printf("\nB(3x4):\n");

    disp(b[0],3,4);

    add(d[0],a[0],b[0],3,4);

    printf("\nD(3x4)=A+B:\n");

    disp(d[0],3,4);

    sub(d[0],a[0],b[0],3,4);

    printf("\nD(3x4)=A-B:\n");

    disp(d[0],3,4);

    printf("\nA(3x4):\n");

    disp(a[0],3,4);

    printf("\nC(4x3):\n");

    disp(c[0],4,3);

    mult(e[0],a[0],c[0],3,4,3);

    printf("\nE(3x3)=A*C:\n");

    disp(e[0],3,3);

    }

    void add(int *m,int *m1,int *m2,int r,int c){

    int i,j;

    for(i=0; i

    for(j=0; j

    *(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);

    }

    void sub(int *m,int *m1,int *m2,int r,int c){

    int i,j;

    for(i=0; i

    for(j=0; j

    *(m+i*c+j) = *(m1+i*c+j) - *(m2+i*c+j);

    }

    void mult(int *m,int *m1,int *m2,int r,int p,int c){

    int i,j,k,t;

    for(i=0; i

    for(j=0; j

    {

    t=0;

    for(k=0; k

    t += *(m1+i*p+k) * *(m2+k*c+j);

    *(m+i*c+j)=t;

    }

    }

    void disp(int *m,int r,int c)

    {

    int i,j;

    for(i=0; i

    {

    for(j=0; j

    printf("%6d",*(m+i*c+j));

    printf("\n");

    }

    }

    00分享举报

    展开全文
  • 稀疏矩阵相加C语言

    千次阅读 2021-03-30 10:56:12
    今天整了下稀疏矩阵相加,不是很难; 题目: 话不多说,代码如下: #include<stdio.h> #include<stdlib.h> #define MAXSIZE 1000 typedef struct{ int row;//第几行 int col;//第几列 int e;//存储的...

    今天整了下稀疏矩阵相加,不是很难;
    题目:
    在这里插入图片描述

    话不多说,代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    
    #define MAXSIZE 1000
    typedef struct{
    int row;//第几行
    int col;//第几列
    int e;//存储的值
    }Triple;
    
    typedef struct
    {
        Triple data[MAXSIZE];
        int m,n,len;//稀疏矩阵的行,列,非零元素的个数
    }TSMatrix;
    
    void createTSMatrix(TSMatrix *A,TSMatrix *B)//创建矩阵
    {    int i=1,j=1;     //data【0】未用
        scanf("%d %d %d %d",&A->m,&A->n,&A->len,&B->len);
        B->m=A->m;
        B->n=A->n;
        int a,b,c;
       for(int j=1;j<=A->len;j++)
        {
            scanf("%d",&a);
             scanf("%d",&b);
              scanf("%d",&c);
              A->data[j].row=a;
              A->data[j].col=b;
              A->data[j].e=c;
    
        }
        for( i=1;i<=B->len;i++)
        {
            scanf("%d",&a);
             scanf("%d",&b);
              scanf("%d",&c);
              B->data[i].row=a;
              B->data[i].col=b;
              B->data[i].e=c;
               }
    
    }
    void EnterTriple(TSMatrix *D,int row,int col,int e)//提供数据相加模块
    {
        D->len++;
        D->data[D->len].row=row;
        D->data[D->len].col=col;
        D->data[D->len].e=e;
    }
    
    void SumMatrix(TSMatrix *A,TSMatrix *B,TSMatrix *C)//矩阵相加
    {
        C->len=0;
       int i=1,j=1;
       while(i<=A->len&&j<=B->len)
       {
           if(A->data[i].row<B->data[j].row)
           {
               EnterTriple(C,A->data[i].row,A->data[i].col,A->data[i].e);//在一级函数里就调用的是地址,所以只用传C就够了,一定要注意!
                i++;
           }
           else if(A->data[i].row==B->data[j].row)
            {
                if(A->data[i].col<B->data[j].col)
                {
                    EnterTriple(C,A->data[i].row,A->data[i].col,A->data[i].e);
                    i++;
                }
          else if(A->data[i].col>B->data[j].col)
                {
                    EnterTriple(C,B->data[j].row,B->data[j].col,B->data[j].e);
                    j++;
                }
                else
                {
                    if(B->data[j].e+A->data[i].e!=0)
                        EnterTriple(C,B->data[j].row,B->data[j].col,B->data[j].e+A->data[i].e);
                    i++;
                    j++;
                }
    
           }
           else
           {
               EnterTriple(C,B->data[j].row,B->data[j].col,B->data[j].e);
                j++;
           }
       }
           while(i<=A->len)
        {
            EnterTriple(C,A->data[i].row,A->data[i].col,A->data[i].e);
            i++;
        }
        while(j<=B->len)
        {
            EnterTriple(C,B->data[j].row,B->data[j].col,B->data[j].e);
            j++;
        }
    
    }
    void printMatrix(TSMatrix *C)//输出矩阵
    {
        for(int i=1;i<=C->len;i++)
        {
            printf("%d %d %d\n",C->data[i].row,C->data[i].col,C->data[i].e);
        }
    }
    
    int main()
    {
        TSMatrix A,B,C;
        createTSMatrix(&A,&B);
        SumMatrix(&A,&B,&C);
        printMatrix(&C);
        return 0;
    
    }
    
    

    有个地方要注意,就是往一级函数里传的是地址,所以在函数里面用二级函数只用传变量名就行了(因为在函数里变量名就是地址了)
    这道题相加时先判断行大小,小的先进;行一样时判断列,小的先进,再让行一样列大的进,再判断行列都一样时相加;
    最后让没进的进去。
    在这里插入图片描述

    展开全文
  • C语言矩阵运算

    2022-06-14 12:03:55
    矩阵运算C语言实现
  • C语言数据结构之两个稀疏矩阵相加。代码中代码功能描述、输入输出说明和测试输出输入。
  • 2.C语言矩阵乘法

    2022-06-01 11:04:28
    具体讲解了矩阵乘法的原理,以及在C语言中如何创建矩阵乘法的函数
  • 1.C语言矩阵加减法

    2022-06-01 14:48:19
    C语言中实现矩阵加减法
  • //矩阵相加 p=a->uval.next;u=b->uval.next; while(p!=a&&u!=b) { q=p->rptr;v=u->rptr; if(q==p&&v!=u)//矩阵a中第p行为空,矩阵b的第u行不为空 while(v!=u)//将b的行的都复制到和矩阵中 {insert(v->i,v->j,v->...
  • c语言矩阵操作

    千次阅读 2021-12-23 17:27:41
    c语言实现矩阵操作
  • C 语言实例 - 两个矩阵相加

    千次阅读 2018-03-09 19:47:00
    C 语言实例 - 两个矩阵相加 C 语言实例 C 语言实例 使用多维数组将两个矩阵相加。 实例 #include <stdio.h> int main(){ int r, c, a[100][100], b[100][100], sum[100][100], i, j; printf...
  • C语言矩阵加法乘法

    2021-05-19 17:18:58
    并不是很难的问题,但是自己思考测试独立完成的,保存于此,给自己一点鼓励。/*Author:SwordAutumn2015年04月08日星期三15:35:00CST*/#include//constintN=3;//constintM=2;#defineN5#defineM5intmain(intargc,char...
  • /** *初始化两个三元组矩阵 * */ InitTMatrix(TMatrix &A,TMatrix &B){ /** *A 0 2 0 B 1 0 0 C 1 2 0 * 3 0 1 3 0 0 6 0 1 */ A.m = 2;A.n = 3;A.t = 3; A.data[1].e = 2; A.data[1].i = 0; A.data[1].j = 1; A....
  • C语言矩阵乘法

    2022-06-07 11:47:52
    矩阵乘法,矩阵n次幂,矩阵n次幂相加
  • 满意答案gjssvqq2013.12.04采纳率:53%等级:12已帮助:6733人矩阵的大小可以通过N,M来改变,数据自己也可以改为你想要的.程序如下:#define N 3#define M 3main(){int a[N][M]={1,2,3,4,5,6,7,8,9}, b[N][M]={9,8,7,6...
  • 矩阵相加那块儿一直出错,看不出来哪里有问题 #include int main(void) { int A[3][3], i, j, sum; for (i = 0; i ; i++) { for (j = 0; j ; j++) { printf("a[%2d]行[%2d]列", i, j); scanf(...
  • //C语言两个矩阵相加,使用多维数组将两个矩阵相加。include int main(){int a[100][100], b[100][100], sum[100][100], i, j, c, r;printf("输入行数(0-100):");scanf("%d", &r);printf("输入列数(0-100):");...
  • C语言实现矩阵运算

    万次阅读 多人点赞 2019-09-04 21:28:06
    最近在学习机器人运动控制学,用到了矩阵运算,并用C语言实现之 一个矩阵最基本的有行数line,列数row和 行数乘以列数个数据(row*line), 所以用一个最基本的结构体变量来表示一个矩阵; 矩阵的结构体: typedef struct...
  • c语言——矩阵运算器

    2022-01-27 18:54:18
    printf("矩阵相加: 4\n"); printf("矩阵相乘: 5\n"); printf("矩阵求逆: 6\n"); printf("伴随矩阵: 7\n"); printf("退出程序: 0\n"); int o; printf("请选择功能:"); scanf("%d",&o); switch(o) { case 1: ...
  • C 语言实例使用多维数组将两个矩阵相加。#include int main(){int r, c, a[100][100], b[100][100], sum[100][100], i, j;printf("输入行数 ( 1 ~ 100): ");scanf("%d", &r);printf("输入列数 ( 1 ~ 100): ");...
  • C语言——矩阵计算(转置、加法、减法、数乘、乘法)
  • 退出矩阵运算 请选择矩阵加/减/乘/数乘运算:1 请输入第一个矩阵的行标和列标(空格分开):2 3 请输入第一个矩阵的值:1 1 1 1 1 1 请输入第二个矩阵的行标和列标(空格分开):2 2 请输入第二个矩阵的值:1 1 1 1 矩阵...
  • C语言 矩阵乘法

    千次阅读 2018-04-16 12:57:41
    矩阵运算时,逐行逐列相乘再相加,因此对于二维矩阵,需要两个for循环来求解,第一个for循环指定行,第二个for循环指定列。除此之外,定义一个变量k来标识A的行中个元素以及标识B的列中个元素。通过k的增加来遍历A的...
  • 稀疏矩阵加法(C语言

    千次阅读 2021-05-23 18:51:40
    稀疏矩阵加法 给定两个矩阵A和B,求其和矩阵C=A+B。 输入格式: 第一行包含两个数Row和Col,分别表示矩阵的行数和列数,A和B的维度是一致的。 第二行只有一个数N​​1​​,表示接下来要输入的A中的非零元素的个数。...
  • void CreateCrossList(CrossList *M)//采用十字链表方试创建稀疏矩阵 { int i; Node *p,*temp; M->row_head=(Node**)malloc((M->m+1)*sizeof(Node*));//注意此处分配的方式和数量(【0】不用所以要多分配一个) M->...
  • 给出两个 3*3 矩阵 , 让两个矩阵对应位置元素相加。 输入 两个 3*3 矩阵 输出 对应位置相加之后的矩阵 样例输入 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 样例输出 1 1 1 1 1 1 1 1 1 代码: #include <...
  • cmatrix.h #include <stdlib.h> #include <math.h> #include <stdio.h> typedef struct Matrix matrix; struct Matrix{ double** A; int m; int n; double det;.../*矩阵求逆
  • 本次主要使用的是for循环,还有其他的方法可以共同讨论 #define _CRT_SECURE_NO_WARNINGS//用于scanf的输入 #include<stdio.h> int main() { int A[3][3] ;... int B[3][3] = { 0 };...//输入矩阵
  • 稀疏矩阵相加 #include<stdio.h> #include<stdlib.h> #define MAX 20 void printsparse(int b[MAX][3]); void readsparse(int b[MAX][3]); void addsparse(int b1[MAX][3],int b2[MAX][3],int b3...
  • C语言矩阵对比,动态二维数组定义,随机数生成大一的时候,我们的高代老师教矩阵时让我们去写个程序生成1000000个矩阵判断矩阵A与矩阵B,在AB=BA概率下相等情况有多少,(当然,只是为了他下节课教学打个底子)我在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,352
精华内容 2,140
关键字:

c语言矩阵相加

友情链接: mping.c.zip