两个矩阵相加减的程序怎么编写?请C语言高手帮忙
这是c++版本的 如果用tc要去掉#include <malloc.h> 将中文提示换成英文的
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <math.h>
#define MAXSIZE 1000
typedef struct
{
int x,y;
int value;
}element;
typedef struct
{
element data[MAXSIZE+1];
int m,n,length;
}tip;
tip *a;
tip *b;
tip *jvzhenanswer;
int i,j,k,l,o,p,q;
void clear(int i,int j,int k)
{
if(i==0)
{
jvzhenanswer->data[k].x=b->data[j].x;
jvzhenanswer->data[k].y=b->data[j].y;
jvzhenanswer->data[k].value=b->data[j].value;
}
else
{
jvzhenanswer->data[k].x=a->data[i].x;
jvzhenanswer->data[k].y=a->data[i].y;
jvzhenanswer->data[k].value=a->data[i].value;
}
}
void add(void)
{
if (a->m!=b->m||a->n!=b->n)
{
printf("error");
return;
}
jvzhenanswer->m=a->m;
jvzhenanswer->n=a->n;
for(i=1,j=1,k=1;i<=a->length||j<=b->length;)
{
if(i>a->length)
{
like(0,j,k);
j++;k++;
continue;
}
if(j>b->length)
{
like(i,0,k);
i++;k++;
continue;
}
if(a->data[i].x<b->data[j].x)
{
like(i,0,k);
i++;k++;
continue;
}
if(a->data[i].x>b->data[j].x)
{
like(0,j,k);
j++;k++;
continue;
}
if(a->data[i].x==b->data[j].x)
{
if(a->data[i].y<b->data[j].y)
{
like(i,0,k);
i++;k++;
continue;
}
if(a->data[i].y>b->data[j].y)
{
like(0,j,k);
j++;k++;
continue;
}
if(a->data[i].y==b->data[j].y)
{
jvzhenanswer->data[k].value=a->data[i].value+b->data[j].value;
jvzhenanswer->data[k].x=a->data[i].x;
jvzhenanswer->data[k].y=a->data[i].y;
if(jvzhenanswer->data[k].value==0) {i++;j++;continue;}
i++;j++;k++;
continue;
}
}
}
jvzhenanswer->length=k-1;
}
void input(int z)
{
printf("请输入第%d个矩阵的行列数 以逗号隔开\
",z);
i=0;
a->data[0].x=1;
b->data[0].x=1;
if(z==1)
{
scanf("%d,%d",&a->m,&a->n);
printf("请输入矩阵元素,以 0,0,0 结束\
");
while(a->data[i].x!=0)
{
i++;
printf("请输入第%d个非零元素的坐标及值\",i);
scanf("%d,%d,%d",&a->data[i].x,&a->data[i].y,&a->data[i].value);
}
a->length=i-1;
return;
}
else
{
scanf("%d,%d",&b->m,&b->n);
printf("请输入矩阵元素,以 0,0,0 结束年\
");
while(b->data[i].x!=0)
{
i++;
printf("请输入第%d个非零元素的坐标及值\",i);
scanf("%d,%d,%d",&b->data[i].x,&b->data[i].y,&b->data[i].value);
}
b->length=i-1;
return;
}
}
void output()
{
k=1;
for(i=1;i<=jvzhenanswer->m;i++)
{
for(j=1;j<=jvzhenanswer->n;j++)
{
if(jvzhenanswer->data[k].x>i||(jvzhenanswer->data[k].x==i&&jvzhenanswer->data[k].y>j))
{
printf("0\");
}
else
{
printf("%d\",jvzhenanswer->data[k].value);
k++;
}
}
printf("\
");
}
}
void main()
{
char c;
long temp;
a=(tip *)malloc(sizeof(tip));
b=(tip *)malloc(sizeof(tip));
jvzhenanswer=(tip *)malloc(sizeof(tip));
for(i=1;i<=MAXSIZE+1;i++) jvzhenanswer->data[i].value=0;
input(1);
input(2);
add();
output();
printf("\
\
thank you!! \
\copyright 2006\
\clear\
");
getche();
}
用C语言编写程序(两个矩阵相加)代码如下:
/**
MatrixAddition.c
实现两个矩阵相加
*/
#include
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=
");
printMatirx(A,3,4);
int B[3][4]={{4,3,5,2},
{0,9,6,1},
{5,7,2,6}};
printf("矩阵B=
");
printMatirx(B,3,4);
int C[3][4];
int i,j;
//矩阵相加:两个矩阵必须行数和列数一样才能相加,
//和矩阵的每个元素分别是两个矩阵对应的元素的和
printf("矩阵A+矩阵B=
");
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("
");
}
int (*p)[COLS]=C;
printMatirx2(p,3);
/*结果应为:
19 13 14 14
18 23 14 8
21 20 8 17
*/
printf("矩阵C-矩阵A=
");
for(i=0;i<3;i++)//控制行
{
for(j=0;j<4;j++)
{
printf("%3d",C[i][j]-A[i][j]);//输出结果
}
printf("
");
}
/*结果应为:
4 3 5 2
0 9 6 1
5 7 2 6
*/
//矩阵数乘:
int D[3][4];
printf("矩阵D:
");
for(i=0;i<3;i++)//控制行
{
for(j=0;j<4;j++)
{
D[i][j]=1;
printf("%d", D[i][j]);//输出结果
}
printf("
");
}
int mul;
printf("矩阵D数乘以:");
scanf("%d",&mul);
printf("矩阵D数乘以%d=
",mul);
for(i=0;i<3;i++)//控制行
{
for(j=0;j<4;j++)
{
D[i][j]=D[i][j]*mul;
printf("%d", D[i][j]);//输出结果
}
printf("
");
}
return 0;
}
扩展资料:
C语言矩阵加减法函数:
void matrix_a(double **a_matrix, const double **b_matrix, const double **c_matrix,int krow, int kline, int ktrl)
////////////////////////////////////////////////////////////////////////////
// a_matrix=b_matrix+c_matrix
// krow :行数
// kline :列数
// ktrl :大于0: 加法 不大于0:减法
////////////////////////////////////////////////////////////////////////////
{
int k, k2;
for (k = 0; k < krow; k++)
{
for(k2 = 0; k2 < kline; k2++)
{
a_matrix[k][k2] = b_matrix[k][k2]
+ ((ktrl > 0) ? c_matrix[k][k2] : -c_matrix[k][k2]);
}
}
}
参考资料:
百度百科-C语言
程序如下:
#define N 3
#define M 3
main()
{
int a[N][M]={1,2,3,4,5,6,7,8,9}, b[N][M]={9,8,7,6,5,4,3,2,1},c[N][M],d[N][M],i,j;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
{
c[i][j]=a[i][j]+b[i][j]; /*相加A+B*/
d[i][j]=a[i][j]-b[i][j]; /*相减A-B*/
}
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%d ",c[i][j]);
printf("\n");
}
pingtf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%d ",d[i][j]);
printf("\n");
}
}
对每个相应的元素进行加减
有什么问题
两个矩阵相加减的程序怎么编写?请C语言高手帮忙
矩阵的大小可以通过N,M来改变,数据自己也可以改为你想要的.程序如下:define N 3 define M 3 main(){ int a[N][M]={1,2,3,4,5,6,7,8,9}, b[N][M]={9,8,7,6,5,4,3,2,1},c[N][M],d[N][M],i,j;for(i=0;i<N;i++)for(j=0;j<M;j++){ c[i][j]=a[i...
请问如何计算矩阵的加减法(C程序)
昨晚写的,运行调试已通过。以后问问题要坚持久一点呀。。。还不许我说话,我留句话是为了晚上好找到你的题目呀。。。=。= include<stdio.h> include<stdlib.h> main(){ int *p1,*p2,*p3;int i,n;char ch;printf("qing shu ru jie shu:");scanf("%d",&n);p1=(int*)malloc(n*n*...
用c语言编写矩阵的加减乘除运算
include <iomanip> using namespace std;template <typename T1,typename T2> void inverse(T1*mat1,T2 *mat2,int a,int b);template <typename T1,typename T2> void multi(T1*mat1,T2*mat2,T2*result,int a,int b,int c);template <typename T> void output(T*mat,char *s,int a,in...
用C语言编写程序(两个矩阵相加)
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]);\/...
用C语言表示两个矩阵相加
然后,使用另一个嵌套循环输出矩阵c,以便查看结果。输出代码如下:printf("矩阵A与B相加如下所示:\\n");for(i=0;i<4;i++){ for(j=0;j<4;j++)printf("%5d",c[i][j]);printf("\\n");} 最终,程序返回0,表示成功执行。注意,这里的示例仅适用于4x4的矩阵。如果需要处理不同大小的...
!!!跪求C语言实现矩阵运算(加,减,乘、求逆、转置)
最好用英文,有时候中文名程序会报错),然后点击“添加”。5、转置类的代码如下图所示。6、在主程序调用转置类,用两个for循坏将转置后的数组(array)输出来;并将结果显示在textbox中。7、最后运行程序查看编写的结果:147、258、369。转置后的结果正确,这样就实现了c#矩阵的转置运算。
如何用C语言编写矩阵运算的代码?
C语言示例代码如下:include<stdio.h> int main(){int i,sumX=0,sumY=0,sum=0;int num[5][5]= {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};for(i=0;i<5;i++){\/\/计算对角线 sumX+=num[i][i];sumY+=num[5-i][i...
怎么用C编程,如果做数学题如矩阵运算,没有函数,什么都要重新编程_百度...
2.使用嵌套的for循环将输入数据分别存到二维数组a,b中,根据公式进行加法运算(可以举一反三,改成加减乘除形式),最终将矩阵c输出。代码:include<stdio.h> void main(){ int a[3][3],b[3][3],c[3][3],i,j;printf("please input matrix a:\\n");for(i=0;i<=2;i++)for(j=0;...
请问如何用C语言实现矩阵求和?
在 C 语言中,实现矩阵求和可以通过遍历矩阵的每个元素并将它们相加来实现。以下是一个简单的示例,展示了如何实现矩阵求和:```c include <stdio.h> int main() { int matrix[3][3] = { {1, 2, 3},{4, 5, 6},{7, 8, 9} };int sum = 0;\/\/ 遍历矩阵的每个元素并求和 for (...
编写一个程序,求矩阵A,B的和,结果存入矩阵C中,并按矩阵形式输出。
include<stdio.h>void main(){ int i,j,c[2][3]; int a[2][3]={{12,23,34},{45,6,32}}; int b[2][3]={{10,12,6},{23,32,3}}; for(i=0;i<2;i++) { for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\\n\\n"); } for(i=0;i<2;i++) ...