该题主要麻烦在,对index排序,同时对应的value值需要同序;累加后,同index需要合并。 解决方案如下: 1、利用struct和qsort进行排序。 2、由于value的值大于1,在判断index相等时,令后出现的index对应的value为零,最终在输出的时候,跳过value为零的情况。

#include <stdio.h>
#include <stdlib.h>
 struct test{int index; int value;
    }data[500];
int compare(const void* a, const void* b){
    return((*(test*) a).index-(*(test*) b).index);
}
int main(){
    int number;
    int i;
    while(scanf("%d",&number)!=EOF){
            for(i=0;i<number;i++){
                scanf("%d%*c%d\n",&data[i].index,&data[i].value);
            }
        for (i=0;i<number;i++){
            for(int j=i+1;j<number;j++){
                if(data[i].index==data[j].index){
                    data[i].value+=data[j].value;
                    data[j].value=0;
                }
            }
        }
        qsort(data, number, sizeof(data[0]), compare);
        for (i=0;i<number;i++){
            if(data[i].value!=0){
             printf("%d %d\n", data[i].index, data[i].value);
            }
            ;
             }
    }
   return 0;
}