本文目录一览:
请问如何计算矩阵的加减法(C程序)
昨晚写的,运行调试已通过。以后问问题要坚持久一点呀。。。还不许我说话,我留句话是为了晚上好找到你的题目呀。。。=。=#
#includestdio.h
#includestdlib.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*sizeof(int));
p2=(int*)malloc(n*n*sizeof(int));
p3=(int*)malloc(n*n*sizeof(int));
printf("qing shu ru ju zhen:\n");
for(i=0;in*n;i++)
scanf("%d",p1+i);
while(scanf("\n%c",ch),ch!='#')
{
for(i=0;in*n;i++)
scanf("%d",p2+i);
if(ch=='+')
{
for(i=0;in*n;i++)
*(p3+i)=*(p1+i)+*(p2+i);
}
if(ch=='-')
{
for(i=0;in*n;i++)
*(p3+i)=*(p1+i)-*(p2+i);
}
p1=p3;
}
for(i=0;in*n;i++)
{
printf("%5d",*(p3+i));
if(i%n==n-1)printf("\n");
}
free(p1);
free(p2);
free(p3);
getch();
}
两个矩阵相加减的程序怎么编写?请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;iN;i++)
for(j=0;jM;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;iN;i++)
{
for(j=0;jM;j++)
printf("%d ",c[i][j]);
printf("\n");
}
pingtf("\n");
for(i=0;iN;i++)
{
for(j=0;jM;j++)
printf("%d ",d[i][j]);
printf("\n");
}
}
C语言实现的矩阵加减乘法
#includestdio.h
/*
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; ir; i++)
for(j=0; jc; 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; ir; i++)
for(j=0; jc; 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; ir; i++)
for(j=0; jc; j++)
{
t=0;
for(k=0; kp; 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; ir; i++)
{
for(j=0; jc; j++)
printf("%6d",*(m+i*c+j));
printf("\n");
}
}