/* main5-3.c 检验bo5-3.c的主程序(与main5-2.c很相像) */
 #include"c1.h"
 typedef int ElemType;
 #include"c5-3.h" /* 此行与main5-2.c不同 */
 #include"bo5-3.c" /* 此行与main5-2.c不同 */
 void main()
 {
   RLSMatrix A,B,C; /* 此行与main5-2.c不同 */
   printf("创建矩阵A: ");
   CreateSMatrix(&A);
   PrintSMatrix(A);
   printf("由矩阵A复制矩阵B:\n");
   CopySMatrix(A,&B);
   PrintSMatrix1(B);
   DestroySMatrix(&B);
   printf("销毁矩阵B后:\n");
   PrintSMatrix1(B);
   printf("创建矩阵B2:(与矩阵A的行、列数相同,行、列分别为%d,%d)\n",A.mu,A.nu);
   CreateSMatrix(&B);
   PrintSMatrix1(B);
   AddSMatrix(A,B,&C);
   printf("矩阵C1(A+B):\n");
   PrintSMatrix1(C);
   SubtSMatrix(A,B,&C);
   printf("矩阵C2(A-B):\n");
   PrintSMatrix1(C);
   TransposeSMatrix(A,&C);
   printf("矩阵C3(A的转置):\n");
   PrintSMatrix1(C);
   printf("创建矩阵A2:");
   CreateSMatrix(&A);
   PrintSMatrix1(A);
   printf("创建矩阵B3:(行数应与矩阵A2的列数相同=%d)\n",A.nu);
   CreateSMatrix(&B);
   PrintSMatrix1(B);
   MultSMatrix(A,B,&C);
   printf("矩阵C5(A×B):\n");
   PrintSMatrix1(C);
 }
Exemple #2
0
 Status SubtSMatrix(RLSMatrix M,RLSMatrix N,RLSMatrix *Q)
 { /* 求稀疏矩阵的差Q=M-N */
   int i;
   if(M.mu!=N.mu||M.nu!=N.nu)
     return ERROR;
   for(i=1;i<=N.tu;++i) /* 对于N的每一元素,其值乘以-1 */
     N.data[i].e*=-1;
   AddSMatrix(M,N,Q); /* Q=M+(-N) */
   return OK;
 }
Status SubSMatrix(TSSMatrix M,TSSMatrix N,TSSMatrix &Q)//¾ØÕó¼õ
{
	int i;

	if(M.mu!=N.mu || M.nu!=N.nu)//
		return ERROR;
	for(i=0;i<N.tu;i++)//
		N.data[i].e*=MINUS;
	return AddSMatrix(M,N,Q);
}
 void main()
 {
   CrossList A,B,C;
   InitSMatrix(A); // CrossList类型的变量在初次使用之前必须初始化
   InitSMatrix(B);
   printf("创建矩阵A: ");
   CreateSMatrix(A);
   PrintSMatrix(A);
   printf("由矩阵A复制矩阵B: ");
   CopySMatrix(A,B);
   PrintSMatrix(B);
   DestroySMatrix(B); // CrossList类型的变量在再次使用之前必须先销毁
   printf("销毁矩阵B后,矩阵B为:\n");
   PrintSMatrix1(B);
   printf("创建矩阵B2:(与矩阵A的行、列数相同,行、列分别为%d,%d)\n",A.mu,A.nu);
   CreateSMatrix(B);
   PrintSMatrix1(B);
   printf("矩阵C1(A+B):\n");
   AddSMatrix(A,B,C);
   PrintSMatrix1(C);
   DestroySMatrix(C);
   printf("矩阵C2(A-B):\n");
   SubtSMatrix(A,B,C);
   PrintSMatrix1(C);
   DestroySMatrix(C);
   printf("矩阵C3(A的转置):\n");
   TransposeSMatrix(A,C);
   PrintSMatrix1(C);
   DestroySMatrix(A);
   DestroySMatrix(B);
   DestroySMatrix(C);
   printf("创建矩阵A2: ");
   CreateSMatrix(A);
   PrintSMatrix1(A);
   printf("创建矩阵B3:(行数应与矩阵A2的列数相同=%d)\n",A.nu);
   CreateSMatrix(B);
   PrintSMatrix1(B);
   printf("矩阵C5(A×B):\n");
   MultSMatrix(A,B,C);
   PrintSMatrix1(C);
   DestroySMatrix(A);
   DestroySMatrix(B);
   DestroySMatrix(C);
 }