文档库 最新最全的文档下载
当前位置:文档库 › 实验三的代码改

实验三的代码改

#include
#define m 6
#define n 8
#define max 50
//#include "savel.c"
//#include "addl.c"
void main()
{int E[m][n],F[m][n],A[max],B[max],C[max];
void CreateMatrix(int A[m][n],int B[50]);
void MatrixAdd(int A[max],int B[max],int C[max]);
int i,j,k;
for(i=0;ifor(j=0;jscanf("%d",&E[i][j]);
for(i=0;ifor(j=0;jscanf("%d",&F[i][j]);
CreateMatrix(E,A);
CreateMatrix(F,B);
MatrixAdd(A,B,C);
i=0;j=0;k=0;
printf("A数组的内容如下:\n");
while(A[i]!=-1)
{//输出A中的内容
printf("%5d,%5d,%5d\n",A[i],A[i+1],A[i+2]);
i=i+3;
}
printf("B数组的内容如下:\n");
while(B[j]!=-1)
{//输出B的内容
printf("%5d,%5d,%5d\n",B[j],B[j+1],B[j+2]);
j=j+3;
}
printf("C数组的内容如下:\n");
while(C[k]!=-1)
{//输出C中的内容
printf("%5d,%5d,%5d\n",C[k],C[k+1],C[k+2]);
k=k+3;
}
}
void CreateMatrix(int A[m][n],int B[50])
{
int i,j,k=0;
for(i=0;ifor(j=0;jif(A[i][j]!=0)
{B[k]=i;k++;
B[k]=j;k++;
B[k]=A[i][j];k++;
}
B[k]=-1;
}
void MatrixAdd(int A[max],int B[max],int C[max])
{
int i=0,j=0,k=0;
while(A[i]!=-1&&B[j]!=-1)
{if(A[i]==B[j])
{//行相等
if(A[i+1]==B[j+1])
{C[k]=A[i];
C[k+1]=A[i+1];
C[k+2]=A[i+2]+B[j+2];
k=k+3;
i=i+3;
j=j+3;
}
else if(A[i+1]{//A的列小于B的列,将A的三个元素直接存入C中
C[k]=A[i];
C[k+1]=A[i+1];
C[k+2]=A[i+2];
k=k+3;
i=i+3;

}
else
{//B的列小于A的列,将B的三个元素直接存入C中
C[k]=B[j];
C[k+1]=B[j+1];
C[k+2]=B[j+2];
k=k+3;
j=j+3;
}
}
else if(A[i]{//A的行小于B的行,将A的三个元素直接存入C中
C[k]=A[i];
C[k+1]=A[i+1];
C[k+2]=A[i+2];
k=k+3;
i=i+3;
}
else
{//将B的行小于A的行,将B的三个元素直接存入C中
C[k]=B[j];
C[k+1]=B[j+1];
C[k+2]=B[j+2];
k=k+3;
j=j+3;
}}
if(A[i]==-1)
while(B[j]!=-1)
{//A结束B还有元素,将B的所有元素直接存入C中
C[k]=B[j];
C[k+1]=B[j+1];
C[k+2]=B[j+2];
k=k+3;
j=j+3;
}
else
while(A[i]!=-1)
{//B结束,A还有元素,将A的所有元素直接存入C中
C[k]=A[i];
C[k+1]=A[i+1];
C[k+2]=A[i+2];
k=k+3;
i=i+3;
}
C[k]=-1;
}












相关文档
相关文档 最新文档