PAT_甲级_1002_C语言

#include<stdio.h>
#include<stdbool.h>
int main()
{
    
    
    int k , n;//数据个数以及下标数
    double a;//键入的数值
    double num[1001] = {
    
    0};
    bool judge[1001];//判断数组中的值是没有被赋值过,还是处理后加和为0
    int cnt = 0;//记录
    //第一行输入
    scanf("%d",&k);
    for(int i = 0;i < k;i++){
    
    
        scanf("%d %lf",&n,&a);
        num[n] += a;
        judge[n] = 1;
    }
    //第二行输入
    scanf("%d",&k);
    for(int i = 0;i < k;i++){
    
    
        scanf("%d %lf",&n,&a);
        num[n] += a;
        judge[n] = 1;
    }
    //记录有值下标数,并输出
    for(int i=0;i<1001;i++){
    
    
        if(num[i]!=0)
            cnt++;
    }
    printf("%d",cnt);
    //挨个输出有值的下标和对应的数值
    for(int i=1000;i>=0;i--){
    
    
    //如果这个值不为0,则不需要判断是否是赋值过,但结果仍为0的情况
        if(num[i]!=0.0){
    
    
            printf(" %d %.1lf",i,num[i]);
        }
        else{
    
    
            continue;
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43511405/article/details/108701513