本文目錄一覽:
請問如何計算矩陣的加減法(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(3×4):\n”);
disp(a[0],3,4);
printf(“\nB(3×4):\n”);
disp(b[0],3,4);
add(d[0],a[0],b[0],3,4);
printf(“\nD(3×4)=A+B:\n”);
disp(d[0],3,4);
sub(d[0],a[0],b[0],3,4);
printf(“\nD(3×4)=A-B:\n”);
disp(d[0],3,4);
printf(“\nA(3×4):\n”);
disp(a[0],3,4);
printf(“\nC(4×3):\n”);
disp(c[0],4,3);
mult(e[0],a[0],c[0],3,4,3);
printf(“\nE(3×3)=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”);
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/254338.html