这一点都不难嘛……
#include
#include
#define max 30
typedef struct {
int i,j,e;
}Triple;
typedef struct node{
Triple data[max+1];
int rpos[max+1];
int mu,nu,tu;
}RLSMatrix;
void main()
{RLSMatrix A, B,C;
int i,j,tp,t,p,brow,ccol,m,ctemp[max+1],num[max+1]={0};
do{
printf("输入矩阵A的行,列,非零元个数:");
scanf("%d%d%d",&A.mu,&A.nu,&A.tu);
printf("输入矩阵B的行,列,非零元个数:");
scanf("%d%d%d",&B.mu,&B.nu,&B.tu);
}while(A.nu!=B.mu);
printf("输入A中元素:");
for(i=1;i<=A.tu;i++)
{
scanf("%d%d%d",&A.data[i].i,&A.data[i].j,&A.data[i].e);
}
A.rpos[1]=1;
for(t=1;t<=A.tu;t++)num[A.data[t].i]++;
for(t=2;t<=A.mu;t++)A.rpos[t]=A.rpos[t-1]+num[t-1];
printf("输入B中元素:");
for(i=1;i<=B.tu;i++)
{
scanf("%d%d%d",&B.data[i].i,&B.data[i].j,&B.data[i].e);
}
B.rpos[1]=1;
for(t=1;t<=max;t++)num[t]=0;
for(t=1;t<=B.tu;t++)num[B.data[t].i]++;
for(t=2;t<=B.mu;t++)B.rpos[t]=B.rpos[t-1]+num[t-1];
C.mu=A.mu;C.nu=B.nu;C.tu=0;
if((A.tu*B.tu)==0) printf("error");
for(i=1;i<=A.mu;i++)
{
for(m=1;m<=max;m++)ctemp[m]=0;
C.rpos[i]=C.tu+1;
if(i
for(j=A.rpos[i];j
{
brow=A.data[j].j;
if(brow
else t=B.tu+1;
for(p=B.rpos[brow];p
{
ccol=B.data[p].j;
ctemp[ccol]+=A.data[j].e*B.data[p].e;
}
}
for(ccol=1;ccol<=C.nu;ccol++)
{
if(ctemp[ccol])
{
if((++C.tu)>max){printf("error");break;}
else{C.data[C.tu].i=i;C.data[C.tu].j=ccol;C.data[C.tu].e=ctemp[ccol];}
}
}
}
for(t=1;t<=C.tu;t++)
printf("%d %d %d\n",C.data[t].i,C.data[t].j,C.data[t].e);
}
#include
using namespace std;
int i,j;
int main()
{
int a[4][4],b[4][4],sum[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
cin>>a[i][j];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
cin>>b[i][j];
sum[i][j]=a[i][j]+b[i][j];
}
cout<
{
for(j=0;j<4;j++)
cout<
return 0;
}
/***********************
测试结果
1 2 3 4
4 5 6 7
2 3 4 5
7 8 9 6
3 2 1 4
4 8 9 3
2 5 8 7
4 5 6 7
4 4 4 8
8 13 15 10
4 8 12 12
11 13 15 13
Press any key to continue
**********************/
这么简单的东西,哎,算是我第一次在百度回答问题,好玩儿~~~~~~
当我没回答过,有分就了不起阿