PAT-A1001

A1001

A+B Problem?

计算a+b 每隔三位输出一个逗号

算出a+b 判断是否为负 然后分离每一位上面的数字 在输出每一个三的倍数之前输出一个逗号 同时注意该数字不能为第一数字

这样只会得到19分

为什么呢?

    while (c){
        cnt++;
        p[cnt]=c%10;
        c/=10;
    }
    if (!flag) printf("-");
    for (int i=cnt;i>=1;i--){
        if (i%3==0&&i!=cnt) printf(",");
        printf("%d",p[i]);
    }

很明显这段代码对c=0的情况是不起任何作用的 所以需要特判一下0

#include<bits/stdc++.h>
using namespace std;
int p[200],a,b,c,cnt;
bool flag=true;
int main(){
    scanf("%d%d",&a,&b);
    c=a+b;
    if (c<0) flag=false;
    c=abs(c);
    while (c){
        cnt++;
        p[cnt]=c%10;
        c/=10;
    }
    if (!flag) printf("-");
    for (int i=cnt;i>=1;i--){
        if (i%3==0&&i!=cnt) printf(",");
        printf("%d",p[i]);
    }
    if (c==0) printf("0\n");
    return 0;
} 

猜你喜欢

转载自www.cnblogs.com/Hiraeth-dh/p/10886925.html