Github 1001

题目速览


1.解题的思路过程

  • 认真读题,题目为A+BFormat,简单的计算a+b问题,特殊在于输出的形式。
  • 输入形式为每个输入文件包含一个测试样例,每个测试样例仅包含一对整型a与b。
  • 数字大小范围为-1000000到1000000,确定使用整型类型表示和。
  • 输出较为特殊,结果必须使用标准形式输出,即结果为四位数及以上的必须从最后开始每三位数字前添加一个逗号,增强结果的可读性。
  • 问题的代码实现
  • 采用取余的方法从最后开始将三位三位取出来。

  • 题目结果最大值为2,000,000最小值为-2000000,最多需要使用两个逗号。

  • 我认为较简单的方法是采用分类,分为不需要逗号(-1000<sum<1000),需要一个逗号(-1,000,000<sum<1,000,000),和其他需要两个逗号。

  • 考虑到有的三位是000,010等情况,取余后仅出现0,10等,printf使用%03d(前面自动补零)。

2.编码过程中调试

检测题目给出样例-1000000 9时出现bug,输出结果为-999,-991,意识到当为负数时,分次输出每次都为负数。我使用绝对值函数将后面的结果变为非负,如此便只留下最开头的负号,与输出相符。

3.上线测试(提交代码)后的bug发现与修改过程

代码
    #include<stdio.h>
#include<math.h>
int main()
{
int a,b,sum;
scanf("%d%d",&a,&b);
sum=a+b;
if(sum<1000&&sum>-1000)
printf("%d",sum);
else if(sum<1000000&&sum>-1000000)
printf("%d,%03d",sum/1000%1000,abs(sum%1000));
else
printf("%d,%03d,%03d",sum/1000000%1000,abs(sum/1000%1000),abs(sum%1000));
return 0;
}
后来我看了其他同学的代码,得到了启发,当和为负数可以先取绝对值,打印出负号,这样代码更为简单。
    #include<stdio.h>
int main()
{
int a,b,sum;
scanf("%d%d",&a,&b);
sum=a+b;
if(sum<0)
{
sum=-sum;
printf("-");
}
if(sum<1000)
printf("%d",sum);
else if(sum<1000000)
printf("%d,%03d",sum/1000%1000,sum%1000);
else
printf("%d,%03d,%03d",sum/1000000%1000,sum/1000%1000,sum%1000);
return 0;
}

在PAT上的提交记录列表截图

今天做了一题类似的输出三位分组问题,题目数据保证输入输出为整型。这次开了数组来存储数据,第一次没有考虑到0的输出导致错误。

    while(result)
{
num[i++]=result%10;
result/=10;
} for(j=i-1;j>=0;j--)
{
cout<<num[j];
if(j%3==0 && j!=0)
{
cout<<",";
}
}

PAT 1001A+B Format的更多相关文章

  1. 第二次作业 编程题 PAT 1001A+B Format

    Github的object-oriented仓库:1001.A+BFormat(20) 1.解题的思路过程 在之前学习C语言时曾经碰到过类似的将数字转换成字符输出的情况,这道题目要求输出的数字每三个间 ...

  2. [PAT]A+B Format[简单]

    1001 A+B Format (20)(20 分) Calculate a + b and output the sum in standard format -- that is, the dig ...

  3. PAT (Advanced Level) Practice 1001 A+B Format (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1001 A+B Format (20 分) 凌宸1642 题目描述: Calculate a+b and output the sum i ...

  4. PAT甲级 1001. A+B Format (20)

    题目原文: Calculate a + b and output the sum in standard format -- that is, the digits must be separated ...

  5. PAT (Advanced Level) Practise:1001. A+B Format

    [题目链接] Calculate a + b and output the sum in standard format -- that is, the digits must be separate ...

  6. pat 1001 A+B Format

    题目链接:传送门 题目简述: 1. 给定两个整数值a,b: 2.范围-1000000 <= a, b <= 1000000: 3.按指定格式输出结果 例:-100000 9 输出: -99 ...

  7. PAT甲级真题打卡:1001.A+B Format

    题目: Calculate a + b and output the sum in standard format -- that is, the digits must be separated i ...

  8. PAT (Advanced Level) Practice 1001 A+B Format (20 分)

    题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805528788582400 Calculate a+b and ...

  9. PAT甲级 1001 A+B Format

    题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805528788582400 1001 A+B Format ( ...

随机推荐

  1. unity游戏开发之entitas框架

    框架介绍 entitas是一个超快.超轻量的c# Entity-Component-System (ECS)框架,专门为Unity引擎设计.提供内部缓存和高速的组件访问,经过精心设计,可以在垃圾收集环 ...

  2. 【转】marquee标签简介

    本文转自:http://www.360doc.com/content/12/0818/16/8351655_230872993.shtml marquee语法    <marquee>&l ...

  3. WPF popup被截断的原因和修改方法

    原因:wpf里 popup不能超过屏幕75%的面积,不知道为什么要这么设置? 修改方法: private void SetPopupScreen() { Rect rtWnd = , , gridMa ...

  4. C# 委托、匿名方法、扩展方法

    一.委托的使用: 详细委托和事件解释请看另一篇:http://www.cnblogs.com/Liyuting/p/6760706.html 二.匿名方法 三.扩展方法

  5. shell与expect结合使用

    在linux操作系统下,使用脚本自动化,一般由两种方案,方案一:telnet+ftp,方案二:ssh+scp+expect. 以下主要使用ssh+scp+expect为例进行说明使用方式. 第一步:安 ...

  6. fzu 2155 盟国

    Problem 2155 盟国 Accept: 39    Submit: 129Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem De ...

  7. 使用Hexo和Github Pages快速搭建个人博客

    在编程路上,每天都在网上查看别人的博客,大牛的文章写得通俗易懂,同时博客网站也非常华丽.作为出入编程的一枚小白也想拥有这样一个自己的网站.那就立马去买一个域名了,在网上找教程来搭建. 搭建的过程还算比 ...

  8. Yii 日期时间过滤列 filter

    在yii使用过程中,我们经常要使用到 按时间区间来检索数据 用gridview自身的filter就无法满足我们得需求. 下面可以用插件的方式来搞定: sydatecolumn 下载地址:http:// ...

  9. 通过UA判断,对滚动条样式进行不同的操作

    浏览器滚动条的默认样式比较丑,有些情况下,又不能直接overflow:hidden掉. 本文阐述如何通过 document.styleSheets[0].insertRule 简单的实现pc端和移动端 ...

  10. drupal7设置不含www的url跳转到含www的url

    打开drupal的.htaccess文件 找到 If your site can be accessed both with and without the 'www.' prefix 将下面对应的三 ...