PAT 1001. A+B Format 解题
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 解题的更多相关文章
- pat 1001 A+B Format
题目链接:传送门 题目简述: 1. 给定两个整数值a,b: 2.范围-1000000 <= a, b <= 1000000: 3.按指定格式输出结果 例:-100000 9 输出: -99 ...
- 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 ...
- PAT 1001. A+B Format(水题)
#include<cstdio> #include<cstring> using namespace std; char s[10]; int main() { int a,b ...
- PAT 1001 A+B Format (20 point(s))
题目: 我一开始的思路是: 用math.h中的log10函数来计算位数(不建议这么做,因为会很慢,而且会出一点别的问题): 用pow函数根据要插入分号的位置来拆分a+b成一个个数字(例如res / p ...
- PAT 1001 A+B 解题报告
PAT 1001 A+B 代码链接:传送门 题目链接:传送门 题目简述: 给定两个值a,b: 范围-1000000 <= a, b <= 1000000: 按指定格式输出a+b的结果,例: ...
- 关于‘1001.A+B Format (20)’的解题报告
1001.A+B Format(20) 首先要感谢一下指导我github上传问题的小伙伴们,捣腾了一整天我终于摸到了一点门路,真的谢谢你们. 小豪的github 问题描述: Calculate a + ...
- "1001. A+B Format (20)" 解题报告
Github : git@github.com:Circlecos/object-oriented.git PDF Of Markdown : "1001. A+B Format (20)& ...
- 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 ...
- PAT甲级 1001 A+B Format
题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805528788582400 1001 A+B Format ( ...
随机推荐
- Android 生态消息推送平台介绍
一.手机厂商平台 华为消息推送服务 华为推送(Push)是为开发者提供的消息推送平台,建立了从云端到手机端的消息推送通道,使应用可以将最新信息及时通知用户,从而构筑良好的用户关系,提升用户的感知和活跃 ...
- 关于ARMv8指令的几个问题
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27512629 NOTE:下面内容仅 ...
- BZOJ2580:[USACO]Video Game(AC自动机,DP)
Description Bessie is playing a video game! In the game, the three letters 'A', 'B', and 'C' are the ...
- Spring 加载Controller逻辑的源码笔记
org.springframework.web.servlet.handler.AbstractHandlerMethodMapping#initHandlerMethods 进行加载Controll ...
- Linux chmod +755和chmod +777 各是什么意思呢?
你可以在linux终端先输入ls -al,可以看到如: -rwx-r--r-- (一共10个参数)第一个跟参数跟chmod无关,先不管.2-4参数:属于user5-7参数:属于group8-10参数: ...
- Ubuntu16.04之开发环境构建
Ubuntu软件安装相对于centos而言,那真的是要愉快的多啊! 以下安装步骤,本人在公司的测试环境和开发环境以及之前个人虚拟机的测试或生产环境都测验过,基本没有问题,只要按照步骤来,即可马到成功! ...
- 简单的django配置和命令
1.创建项目:django-admin startproject 项目名称 2.进入项目:cd 项目名称 3.创建子应用:python manage.py startapp 子应用名称 4.把子应用添 ...
- gitlab webhook php exec 调用 shell 脚本。shell 脚本中调用 git pull 命令无法执行。
情况如下: 我在ubuntu server 14.04 上面安装了gitlab,来托管项目代码.然后想通过gitlab的web hook 功能来做测试服务器代码自动化更新代码功能.现在遇到一个问题:就 ...
- 几个简单易懂的排序算法php
几个简单易懂的排序算法.排序算法,在应用到解决实际问题的时候(由于不一定总是数字排序),重点要分析出什么时候该交换位置. <?php // 冒泡排序 function bubble_sort(a ...
- WC 2019 游记 - 败者之低语
败者之低语 WC 2019 游记 Day -1 看了一圈PKU和THU的题,感觉图像识别真有意思... 感觉非常讲道理,pku还是比thu简单一点的... 听说高二414在thu没有进面试? 震惊!( ...