C语言中怎么用指针实现两矩阵的相加(矩阵的行数与列数不相等 比如说是两行三列)

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-30
C语言中怎么用指针实现两矩阵的相加

void MatrixAdd(int *a,int *b,int *result,int n)//a,b两个n阶矩阵相加,结果保存在矩阵result中(指针a,b,result分别用来接收三个二维数组的首地址)

int i;
for(i=0;i<n*n;i++)*(reslut+i)=*(a+i)+*(b+i);
}

#include "stdio.h"
#include "stdlib.h"
int **matrixAdd(int x1[][3],int x2[][3],int row,int col)
{
int **a=NULL;
int i,j;
a=(int **)malloc(row*sizeof(int *));
for(i=0;i<row;i++)
a[i]=(int *)malloc(col*sizeof(int));
for(i=0;i<row;i++)
for(j=0;j<col;j++)
a[i][j]=x1[i][j]+x2[i][j];
return a;
}
int main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[2][3]={{11,12,13},{14,15,16}};
int ** result=NULL;
int i,j;
result=matrixAdd(a,b,2,3);
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%d ",result[i][j]);
printf("
");
}
free(result);
result=NULL;
}
结果:




最简单的 约定矩阵的行列 然后用二维数组存储矩阵
在加法的时候 转换成一维数组 然后按顺序相加就可以了
比如
int a[2][3], b[2][3];
//input values
add((int *)a, (int *)b, 2*3);

....
void add(int * a, int *b, int size)
{
int i;

for(i = 0; i < size; i ++)

a[i] += b[i];

}
这个是把a+b的结果存在a中的 当然也可以小小修改一下 加个参数c 然后把结果存在c中

  • 练习数组指针作为函数参数:求 3×4 的二维数组中的所有元素之和。_百...
    答:include<iostream> //若为6.0编译器,改为#include<iostream.h> using namespace std; //6.0,将此句删除。include <stdio.h> main(){ int a[3][3]={...};int i,j,sum=0;for(i=0;i<3;i++)for(j=0;j<3;j++)sum+=a[i][j];} ...
  • 十字链表表示稀疏矩阵,并求矩阵的加法,减法,乘法,运算要求用C语言
    答:矩阵的加法是对应项相加,那么你只需要把用十字链表示的两个矩阵中,对应项相加即可。具体来说,对每个顶点,在表头表中查找,然后再查找与其有联系的结点。指针后移,比较两个十字链表中是否存在两个相同的结点,有,则相加,将结果保存到其中一个十字链表中。否则,不变。依次查找其他的顶点。就可以...
  • ...的整数矩阵和一个3*2的整数矩阵,使用指针数组实现这两个矩阵的相乘...
    答:C语言:输入一个2*3的整数矩阵和一个3*2的整数矩阵,使用指针数组实现这两个矩阵的相乘。程序如下: 问题:1.运行结构有错误 2.输入第一个矩阵时为什么可以输入7个数据? #include <stdio.h> main() { int i,j,n,*tem[3]; int p[2][3],q[3][2],r[2][2]; tem[0]=p[0];tem[1]=q[0];...
  • C语言 用指针求两数字的和.
    答:include <stdio.h>void f1(int m, int n, int *t){ *t = m+n;}int main(){ int m,n,t; scanf("%d%d",&m,&n); f1(m,n,&t); printf("%d\n", t); return 0;}
  • (用C语言编程)求一个一维整型数组各个元素的和,要求用指针做函数参数实...
    答:include<stdio.h> define N 5 double addsum(float *p,int n){ int i;float *p1;double sum=0;p1=p;for(i=0;i<n;i++){ sum=sum + (*p1);p1++;} return(sum);} void main(){ double product(float *p,int n);float a[N],*p;double sum;printf("input the number!\n");...
  • c语言大数的加法用数组char指针实现
    答:做大数加法,首先要能保存大整数。C能提供的最大的整数类型也就是long long int了吧,还是有上限。用整数类型这条路不通。所以想到把大整数看作字符串(即char数组),一位数字就是数组的一个元素。数组能有多长?几万位不止,应付大数加法很轻松。基本做法就是把两个加数各自存为字符串。(怎么把...
  • C语言编程问题,求两数之和、差、积;调用,指针(帮忙看看我的程序哪错...
    答:int process(int *a,int *b){ char i;int j;printf("请输入您想要的计算(+/-/*):");getchar(); //要把之前输入两个数时按的回车给过滤掉 scanf("%c",&i);if(i=='+') //字符比较用不着strcmp { j=add(a,b);return j;} if(i=='-'){ j=sub(a,b);return j;} if(i...
  • C语言2个指针指向的值怎么样实现相加和相乘
    答:用*取值就可以了 比如 int a,b;int *p=&a;int *q=&b;要相加就是 p+*q 要相乘 就是 p**q
  • 用C语言编写一个程序,通过指针求一个数组中所有元素的和
    答:include "stdio.h"void main(){ int a[10];int i,count=0;printf("请输入10个数组元素: \n");for(i=0;i<10;i++){ printf("%d : ",i+1);scanf("%d",&a[i]);} for(i=0;i<10;i++)count+=*(a+i);printf("数组元素和 = %d\n",count);} ...
  • c语言 指针实现加法乘法运算
    答:include <stdio.h> double add(double* a,double*b){return *a+*b; } double multiply(double*a,double*b){return (*a)*(*b) ;} int main(){ double p,q;printf("请输入两个数:\n");scanf("%f,%f",&p,&q);printf("和=%f,积=%f",add(&p,&q),multiply(&p,&q));} ...