为0的不要输出。
#include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> using namespace std; double a[1500],b[1500]; int k; int main() { for(int i=0;i<=1000;i++) a[i]=b[i]=0; int Max=-1; scanf("%d",&k); for(int i=1;i<=k;i++) { int id;double num; scanf("%d%lf",&id,&num); Max=max(Max,id); a[id]=num; } scanf("%d",&k); for(int i=1;i<=k;i++) { int id;double num; scanf("%d%lf",&id,&num); Max=max(Max,id); b[id]=num; } int cnt=0; for(int i=Max;i>=0;i--) if(a[i]+b[i]!=0) cnt++; printf("%d",cnt); int op=0; for(int i=Max;i>=0;i--) { if(a[i]+b[i]!=0){ printf(" %d %.1lf",i,a[i]+b[i]); } } return 0; }