《面向对象程序设计》第二次作业(一)

ps:这里小提一句,我选用的Mac端Markdown工具是Mou,亲测不错,有需要的同学可以的同学可以下载来试试。

Mou icon

好了,回归正题,现在开始解决这次作业的编程题。



1001. A+B Format (20)

git仓库中的题目与解答

解题过程:

  • 分析:

    这道题目和最初遇到的 A+B problem 很像,只是要求两数相加的和每三个数必须用逗号分隔,所以输出有所不同,因为位数比较小,所以这道题需要考虑的情况比较简单。

  • 难点:

    要分成三种情况一到三位数、四到六位数、七到九位数;负数情况下的符号处理;三个数连成一组时如果不是三位要用0补齐等。

  • 实现:

    先判断正负数,负数情况打印符号后取相反数;先判断相加之后的和的位数,然后分情况决定逗号分隔情况;0的补全用%03d处理。

  • 举例:

    以七到九位数的情况位例子,三个部分的数字分别用 总和被1000000除、总和被1000除后对1000取余、总和对1000取余。

  • 测试数据:

test1test2test3
-735135651161651
-533645864-933454

实际代码:

#include <stdio.h>
int main()
{
    int a,b,c;
    scanf("%d%d",&a,&b);
    c=a+b;
    //printf("%d ",c);      <----就是被这行坑了一次WA
    if (c<0) {
        c=-c;
        printf("-");
    }
    if (c>999999)
    {
        printf("%d,%03d,%03d",c/1000000,(c/1000)%1000,c%1000);
    }
    else if (c<=999)
    {
        printf("%d",c);
    }
    else
    {
        printf("%d,%03d",c/1000,c%1000);
    }
    return 0;
}

测试结果: AC

886162-20160208235614558-1450656386.jpg

  • 插曲:一开始在编译器中检查结果时,代码中有一行用于检验的代码,输出没有逗号隔开的原始的和的数字,提交的时候忘记注释掉,结果全WA了,吓了自己一跳,回来再用数据测试时才发现结果多了这个不该有的东西,注释掉后AC。

转载于:https://www.cnblogs.com/vayhang-E-airshiner/p/5185359.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值