#include<iostream>
#include<iomanip>
using namespace std;
int main() {
float array_1[1001], array_2[1001], array[1001];
int mark_1[1001], mark_2[1001], mark[1001];
int count1, count2, count = 0;
for (int i = 0; i < 1001; i++) {
mark_1[i] = 0;
mark_2[i] = 0;
array_1[i] = 0;
array_2[i] = 0;
}
cin >> count1;
for (int i = 0; i < count1; i++) {
int n;
cin >> n;
mark_1[n] = 1;
cin >> array_1[n];
}
cin >> count2;
for (int i = 0; i < count2; i++) {
int n;
cin >> n;
mark_2[n] = 1;
cin >> array_2[n];
}
for (int i = 0; i < 1001; i++) {
mark[i] = mark_1[i] + mark_2[i];
array[i] = array_1[i] + array_2[i];
if (mark[i] != 0 && array[i] != 0) count++;
}
int first = 0;
while (mark[first] == 0 || array[first] == 0) {
first++;
if (first > 1000) {
cout << 0;
return 0;
}//项数为0的情况
}
cout << count << " ";
for (int i = 1000; i > first; i--) {
if (mark[i] != 0 && array[i] != 0) {
cout << i << " ";
cout << fixed << setprecision(1) << array[i] << " ";//格式化输出 控制一位小数
}
}
cout << first << " " << fixed << setprecision(1) << array[first];
system("pause");
return 0;
}
注意点:1. 输出控制一位小数 2. 注意正负相抵为0的情况 3.注意最终项数为0的情况
待改进:无需多mark数组,下次再改...