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. 1.Redis安装(Linux环境)

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.Redis安装 使用的最新版本为 3.2.9,下载并安装: wget http://download.re ...

  2. MySql详解(四)

    MySql详解(四) MySql的DML操作 插入: 一.方式一 语法: insert into 表名(字段名,...) values(值,...); 特点: 1.要求值的类型和字段的类型要一致或兼容 ...

  3. Spark2.3文档翻阅的一点简略笔记(WaterMarking)

    写本文原因是之前已经将官网文档阅读过几遍,但是后来工作接触spark机会较少所以没有跟进新特性,利用周末一点闲暇时间粗略阅读一篇,将自己之前遇见过的问题解决过的问题印象不深刻的问题做一下记录. 1关于 ...

  4. Android APP的字体设置

    Android系统自带有对字体的设置,这些设置是对字体的显示方式的设置,比如加粗,倾斜,下划线,字号等,但是对于字体本身,比如设置为楷体,隶书等貌似没有.Android系统只有一种默认的,如果需要修改 ...

  5. trycatche

    <?phpheader("Content-type: text/html; charset=utf-8"); try{$aaa = 0;if ($aaa == 9) {ech ...

  6. nginx静态文件缓存的解决方案

    nginx的一大功能就是完成静态资源的分离部署,减轻后端服务器的压力,如果给这些静态资源再加一级nginx的缓存,可以进一步提升访问效率. 第一步:添加nginx.conf的http级别的缓存配置 # ...

  7. java环境配置针对win10(电脑重装必备) 最后一步很重要

    jdk和jre都默认安装c盘. 系统变量→新建 JAVA_HOME 变量:变量值填写jdk的安装目录(本人是 C:\Program Files\Java\jdk1.8.0_131). 系统变量→新建 ...

  8. easyui 如何引入

    一:引入easyui 1:参考官网:http://www.jeasyui.net/ 2:引入 整个文件夹:themes,包括:icon.css.image 等等 3:引入easyui.css      ...

  9. mac开启Airdrop的硬件要求

    OS X 10.13之后,新的airdrop需要硬件支持,需要蓝牙4.0 以及Wi-Fi 5GHz 开启!!!! 对于 OS X 10.12 以下的旧系统.即使是有线网络也可以使用,通过以下命令开启有 ...

  10. 汇编 inc 和 dec 指令

    知识点: inc 加1指令 dec 减1指令 一.加一指令inc inc a 相当于 add a, //i++ 优点 速度比sub指令快,占用空间小 这条指令执行结果影响AF.OF.PF.SF.Z ...