1. GitHub
  2. PDF

1001. A+B Format (20)

Calculate a + b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits).


解题思路

将a+b的值先存在sum中,再逐个分解sum的数字,将组成sum的所有数字存到数组中,由于题目给出a和b的范围是-1000000及1000000之间,于是数组只用开到7就行,接着是处理输出格式问题,首先判断sum共有几位数,采用从高位往低位遍历寻找第一个不为0的数,该数即为最高位,然后从此为开始往低位输出,输出的时候判断一下需不需要输出“,”,判断依据是下一位位数是否为3的整数倍,是则输出。

调试过程

问题1:数组越界

我的思路是设置一个数组number来保存sum各位上的数字,经分析sum最多只有7位也就是七个数字,所以我不假思索的写上了int number[7];,这样定义也不是不可以只要接下来从0开始存就可以了,但我又不假思索的从number[1]开始存到了number[7],于是问题就出现了,导致最后一位全错。(其实我事先在DC上编译运行的时候是没问题的,后来提交后才发现了错误,至今没懂为什么自己运行的时候竟然是过得去的。)这个小问题告诉我们,细心非常之重要。

再次划重点:数组下标从0开始

问题2:负号的输出问题

由于第一版代码我把负数的判断放在了最后,所以每输出一个数字就判断一次正负的,最终导致出现了多个负号的情况。于是改进办法就是从一开始就先判断正负,判断完后直接输出负号,再取绝对值进行下面的运算。

问题3:flag忘记初始化

最后一次提交,出现了一个错误,查了帮助提示是数组越界。于是自己看了半天代码,尝试了各种情况后还是没找出是哪一组数据出现了问题,最后经高人指点发现其实就是漏了全为0的情况……这还是一个细节问题。初始化了flag之后就全AC了。

提交记录

后记

虽然作业只是很简单的一道题目,但还是可以从中收获许多经验。这道题带给我的,就是细心的重要性。细节无疑在编程中是不可忽视的部分,也是最容易出错的地方。往往有时过不去就是一个地方的小细节出了错,有时是格式,有时甚至是单词错了,这些问题还好,编译的时候还会提示你,但如果是编译器找不出来的问题那就有点麻烦了。所以说,从现在开始就要养成注意细节的习惯了。


附录(代码)

#include <stdio.h>
#include <math.h>
int main()
{
int a,b,sum,number[8]={0},i,flag=0;
scanf("%d %d",&a,&b);
sum=a+b;
/*处理负号*/
if (sum<0)
{
printf("-");
sum=abs(sum);
}
/*将sum中每个数依次存入数组中*/
for (i=1;i<=7;i++)
{
if (sum!=0)
{
number[i]=sum%10;
sum=sum/10;
}
else break;
}
/*寻找最高位*/
for (i=7;i>0;i--)
{
if (number[i]!=0)
{
flag=i;
break;
}
}
/*依次输出数字*/
for (i=flag;i>0;i--)
{
printf("%d",number[i]);
if ((i>3)&&((i-1)%3==0))
{
printf(",");
}
}
if (flag==0) printf("0"); //处理为0的情况
return 0;
}

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

  1. pat 1001 A+B Format

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

  2. PAT 1001 A+B Format (20分) to_string()

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

  3. PAT 1001. A+B Format(水题)

    #include<cstdio> #include<cstring> using namespace std; char s[10]; int main() { int a,b ...

  4. PAT 1001 A+B Format (20 point(s))

    题目: 我一开始的思路是: 用math.h中的log10函数来计算位数(不建议这么做,因为会很慢,而且会出一点别的问题): 用pow函数根据要插入分号的位置来拆分a+b成一个个数字(例如res / p ...

  5. PAT 1001 A+B 解题报告

    PAT 1001 A+B 代码链接:传送门 题目链接:传送门 题目简述: 给定两个值a,b: 范围-1000000 <= a, b <= 1000000: 按指定格式输出a+b的结果,例: ...

  6. 关于‘1001.A+B Format (20)’的解题报告

    1001.A+B Format(20) 首先要感谢一下指导我github上传问题的小伙伴们,捣腾了一整天我终于摸到了一点门路,真的谢谢你们. 小豪的github 问题描述: Calculate a + ...

  7. "1001. A+B Format (20)" 解题报告

    Github : git@github.com:Circlecos/object-oriented.git PDF Of Markdown : "1001. A+B Format (20)& ...

  8. 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 ...

  9. PAT甲级 1001 A+B Format

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

随机推荐

  1. [部署]VM11下CentOS7mini安装及配置

    最近使用了CentOS发现比Ubuntu更简洁,有些爱上CentOS了 1. 准备一版CentOS安装镜像文件 官网下载地址:http://www.centos.org/download/ 官方有三个 ...

  2. python difflib.md

    difflib 此模块提供了用于比较序列的类和函数.它可以用于例如比较文件,并且可以产生各种格式的差异信息,包括HTML和上下文以及统一差异. difflib 模块包含用于计算和处理序列间差异的工具. ...

  3. 【Hibernate步步为营】--核心对象+持久对象全析(一)

    引言         上篇博客对Hibernate进行了基本的解析.并分析了它的一些特性. Hibernate可以如此的流行也是由于它有诸多长处,不论什么事物都有两面性.Hibernate尽管流行.可 ...

  4. BZOJ2460:[BJWC2011]元素(贪心,线性基)

    Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越 ...

  5. Odoo进销存业务思路浅析

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9307485.html  一:采购业务(进) 1:根据采购对象和性质,采购业务主要分为四类: 生产性采购:采购企 ...

  6. Python2.7-getpass

    getpass模块,当用户输入密码时,可以不在屏幕上显示,但是用户也不能看到自己输了几位输了什么 1.模块方法 1.1 getpass.getpass([prompt[, stream]]):prom ...

  7. 关于YARN Node Labels的一点理解

    最近在做实验,实验需要进行分区域计算,网上查了资料后发现Yarn Node Labels + Capacity-Scheduler可以实现我的需求 但是当任务提交到capacity-scheduler ...

  8. SNAT和DNAT

    1.SNAT iptables防火墙 Centos6.6 64位 iptables 内网:eth0 172.16.4.1 外网:eth 112.112.112.112/24 当有用户访问公网时,修改用 ...

  9. 第4章 初识STM32

    第4章     初识STM32 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ...

  10. python基础1之python介绍、安装、变量和字符编码、数据类型、输入输出、数据运算、循环

    开启python之路 内容概要: 一.python介绍 二.安装 三.第一个python程序 四.变量和字符编码 五.用户输入 六.数据类型 七.一切皆对象 八.数据运算 九.if else 流程判断 ...