题目链接 挺简单的,但是不知道为何一开始错了最人性的是指数从大到小排列好了 其实指数并没有要求是整数吧 #include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> float a[1111]; int main(){ int k1,k2,k; int n;float an; memset(a,0,sizeof(a)); scanf("%d",&k1); while(k1--) { scanf("%d",&n); scanf("%f",&an); a[n]+=an; //flag[n]=1; } scanf("%d",&k2); while(k2--) { scanf("%d",&n); scanf("%f",&an); a[n]+=an; //flag[n]=1; } k=0; for(int i=0;i<=1000;i++) { if(a[i]!=0) k++; } printf("%d",k); for(int i=1000;i>=0;i--) { if(a[i]!=0) printf(" %d %.1f",i,a[i]); } return 0; }