矩阵加法
输入:
1,1,2;2,1,3↵
1,2,5;2,1,-3↵
输出:
1,1,2;1,2,5↵
程序:
#include
#include
#define MAX 100
typedef struct {
int row,col;
int e;
}Triple;
typedef struct {
Triple data[101];
}Mat;
int main(){
Mat *A=(Mat*)malloc(MAX*sizeof(Mat));
Mat *B=(Mat*)malloc(MAX*sizeof(Mat));
Mat *C=(Mat*)malloc(MAX*sizeof(Mat));
scanf("%d,%d,%d;%d,%d,%d\n",&A->data[1].row,&A->data[1].col,&A->data[1].e,&A->data[2].row,&A->data[2].col,&A->data[2].e);
scanf("%d,%d,%d;%d,%d,%d\n",&B->data[1].row,&B->data[1].col,&B->data[1].e,&B->data[2].row,&B->data[2].col,&B->data[2].e);
int i,j;
int m,n;
int cou=0;
int flag1=0;
int flag2=0;
for(i=1;i<3;i++)
{
for(j=1;j<3;j++)
{
if((A->data[i].row!=B->data[j].row)||(A->data[i].col!=B->data[j].col)) flag1=flag1;
else flag1++;
}
if(flag1=0){
cou++;
C->data[cou].row=A->data[i].row;
C->data[cou].col=A->data[i].col;
C->data[cou].e=A->data[i].e;
}
else {
int q=1;
while((A->data[i].row!=B->data[q].row)||(A->data[i].col!=B->data[q].col)){
j++;
}
cou++;
C->data[cou].row=A->data[i].row;
C->data[cou].col=A->data[i].col;
C->data[cou].e=A->data[i].e+B->data[q].e;
}
}
for(m=1;m<3;m++){
for(n=1;n<3;n++){
if((A->data[n].row!=B->data[m].row)||(A->data[n].col!=B->data[m].col)) flag2=flag2;
else flag2++;
}
if(flag2=0){
cou++;
C->data[cou].row=B->data[m].row;
C->data[cou].col=B->data[m].col;
C->data[cou].e=B->data[m].e;
}
}
for(int p=1;C->data[p].e!=0&&p<5;p++)
{
printf("%d,%d,%d;",C->data[p].row,C->data[p].col,C->data[p].e);
}
printf("\n");
}
错误类型:0.998 540 保密 否 TLE: 超过时间限制
修改👇两个部分
if(flag1==0){ // 修改此行
cou++;
C->data[cou].row=A->data[i].row;
C->data[cou].col=A->data[i].col;
C->data[cou].e=A->data[i].e;
}
else {
int q=1;
while((A->data[i].row!=B->data[q].row)||(A->data[i].col!=B->data[q].col)){
j++;
}
cou++;
C->data[cou].row=A->data[i].row;
C->data[cou].col=A->data[i].col;
C->data[cou].e=A->data[i].e+B->data[q].e;
}
if(flag2==0){ // 修改此行
cou++;
C->data[cou].row=B->data[m].row;
C->data[cou].col=B->data[m].col;
C->data[cou].e=B->data[m].e;
}
#include<stdio.h>
#define N 2
#define M 3
int main()
{
int arr[N][M];
int brr[N][M];
int crr[N][M];
printf("请输入第一个矩阵的值\n");
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
scanf("%d",&arr[i][j]);
if(i==0)
{
crr[i][j]=arr[i][j];
}
}
}
printf("请输入第二个矩阵的值\n");
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
scanf("%d",&brr[i][j]);
if(i==0)
{
// *(*(crr+i+1)+j)=brr[i][j];
crr[i+1][j]=brr[i][j];
}
}
}
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
printf("%d ",crr[i][j]);
}
printf("\n");
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: