debug之后发现输入似乎没有问题,但是debug运行到printf函数就停了,按了几次下一行没反应,然后退出了。

卧槽刚刚想截屏运行了一次,又有输出了,结果如图

img





#include<stdio.h>
#include<malloc.h>
#define MAX 100
typedef struct{
 int hang,lie;
 int value;
}Triple;
typedef struct{
 Triple data[MAX];
 int nonezero;
}*TSMatrix;
void scanfTSM(int i,TSMatrix P)//输入
{
  int r,c,v;
 for(int j=0;j<i;j++){
    scanf("%d%d%d",&r,&c,&v);
    P->data[j].hang=r;
    P->data[j].lie=c;
    P->data[j].value=v;
     }
     P->nonezero=i-1;
}
void MergTSM(TSMatrix A,TSMatrix B,TSMatrix C)//合并
{
 int a=0,b=0,c=0;
 Triple a1,b1;
 while(1){
    if(a> A->nonezero&&b<B->nonezero ) {
        while(b<= B->nonezero){ C->data[c]=B->data[b];b++;c++; }
          break; }
    if(a < A->nonezero&& b > B->nonezero ) {
        while(a<= A->nonezero){ C->data[c]=A->data[a];a++;c++; }
          break; }
    if(a>A->nonezero && b>B->nonezero ) break;
    a1=A->data[a];
    b1=B->data[b];
    if(a1.hang==b1.hang && a1.lie==b1.lie) {C->data[c]=a1;C->data[c].value+=b1.value;
     a++;b++;c++; }
    if(a1.hang < b1.hang ) {C->data[c]=a1;a++;c++;   }
    if(a1.hang > b1.hang ) {C->data[c]=b1;b++;c++;   }
    if(a1.hang==b1.hang) {
        if(a1.lie < b1.lie) {C->data[c]=a1;a++;c++; }
        if(a1.lie > b1.lie) {C->data[c]=b1;b++;c++; }
    }
 }
 C->nonezero=c;
}
int main(){
 int a,b;
 scanf("%d%d",&a,&b);
 TSMatrix A,B,C;
 A=(TSMatrix)malloc(sizeof(Triple));
 B=(TSMatrix)malloc(sizeof(Triple));
 C=(TSMatrix)malloc(sizeof(Triple));
 A->nonezero=0;
 B->nonezero=0;
 C->nonezero=0;
 scanfTSM(a,A);
 scanfTSM(b,B);
 MergTSM(A,B,C);
 int m=0;
 int h,l,shu;
 while(m <= C->nonezero ){
    h=C->data[m].hang;
    l=C->data[m].lie;
    shu=C->data[m].value;
    printf("%d %d %d\n",h,l,shu);
    m++;
 }
 return 0;
 }