PAT 甲级 1001-1002 水题两道

题目地址:https://www.patest.cn/practice
1001:
没想到第一题就有小坑,看题目还以为是随便一个A+B problem
Tips:输入1000 0试试就知道自己为什么部分通过了

int main()
{
    int m,n,ans,a[10],p;
    while(scanf("%d %d",&m,&n)!=EOF)
    {
        p=0;
        ans = m+n;
        //printf("%d\n",ans);
        while(ans/1000!=0){
            a[p++] = ans%1000;
            ans /= 1000;
        }
        a[p] = ans%1000;
        //printf("%d\n",p);
        for(int i=p;i>=0;i--){
            if(i==p) printf("%d",a[i]);
            else if(i!=p) printf("%03d",abs(a[i]));//坑在这里

            if(i!=0) printf(",");
            }
        printf("\n");
    }
    return 0;
}

1002:
坑1:系数可能会正负相消为0,开始看到Ni>0以为ani也>0了
坑2:数字精确到1位小数,开始也没注意

double a[1005],b[1005];
int main()
{
    int n,p=0,q=0,t1;
    double t2;
    while(scanf("%d",&n)!=EOF)
    {
        p++;
        q+=n;
        if(p==1) for(int i=0;i<n;i++)
        {
            scanf("%d %lf",&t1,&t2);
            a[t1] = t2;
            //printf("%d %g\n",t1,t2);
        }
        //getchar();
        if(p==2) for(int i=0;i<n;i++)
        {
            scanf("%d %lf",&t1,&t2);
            if(a[t1]!=0) q--;
            a[t1] += t2;
            if(a[t1]==0) q--;

            //printf("%d %g\n",t1,t2);
        }

        if(p==2) {
            printf("%d",q);
            for(int i=1000;i>=0;i--)
            {
                if(a[i]) printf(" %d %.1f",i,a[i]);
            }

            p = 0; q = 0;
            for(int i=0;i<=1000;i++)
            {
                a[i] = 0;
            }

        }
    }
    return 0;
}

你可能感兴趣的:(2020复试)