第二次作业(1001.A+B Format (20))
一开始看题目的时候有点没看懂,要求把数分组是什么意思。如果只是单纯的a+b的话是不可能的,所以关于这一点犹豫了很久。本来以为是指把a,b,以及它们的和c各建一个数组,但只输入一次的话,建数组根本没意义。后来才终反应过来,是指每三位用逗号隔开。
于是就先尝试将a和b相加后的值,取除1000后的余数,依次存入一个数组中,然后再按顺序输出。
输入1000000和9,跳出来的是“9,1,0,9”。看起来非常的有问题。
把原先的“%d”改为“%03d”后,输出变成“009,001,000,009”了。从结果来看应该是多循环了一次。
于是就改了改循环,修改后显示的是“001,000,009”。
要把第一组的0去掉,于是重新讨论分类。
终于正常了,现在是“1,000,009”。
但是突然发现自己忘记考虑负数了。
尝试带入-1000000和-9,得出的是“-1,000,-09”。看来除了第一部分,其余都不用保留符号。
再在原代码上改下去的话会越来越复杂,就决定重新开始。
这次把-1000~1000之间的数先单独提出来,这是可以直接输出的。
因为除了第一部分其他都不需要符号,所以引入abs函数。
意识到数字范围在-1000000~1000000之间,也就是说最多不超过三组,既然之前的数组用起来太费劲,那这次就直接按大小分好了。
一共分成了绝对值小于1000,小于1000000,大于1000000三组。
因为最多也只有两个逗号,所以直接用i,j,r来代表三块的数字。
输入-1000000和-9,这回是“-1,000,009”了。
又输入32和-32,得出“0”。
输入-10000和81,得出“-9,919”。
似乎没有问题了,去提交代码。
但是代码提交后,却显示返回非零。非常困扰。
原来是编译器选错了。
改成C后提交就好啦。
这是代码。

提交列表。

因为学长提出了把abs放在前面,所以也就做了尝试。但究竟是否有提高代码效率没有看出来……这该怎么看呢?
当初没有把abs放在前面是因为想当然的觉得如果先设了绝对值,后面每次输出时就都得重新讨论正负。但这次想了想后,觉得既然已经用了直接分三类讨论这种偏投机取巧的方法,那不妨更干脆点,直接在开头就判断正负,如果是负数,就直接先输出一个负号。
原先的代码是很久以前打的了,导致当时随手设的变量名现在看得晕乎乎的,所以这次是重新编了一遍。设置变量名时,三块内容分别用st,nd,rd表示,感觉清楚多了。中途又出现了“%d"中没有加03的错误,还出现了输出时加了&的低级错误,真是很不应该。
编完后又拿去测了测,通过了。
以下是代码。
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,d;
int st,nd,rd;
scanf("%d %d",&a,&b);
c=a+b;
d=abs(c);
if(c<0) printf("-");
if(d<1000) printf("%d",d);
else if(d<1000000)
{
st=d%1000;
nd=d/1000;
printf("%d,%03d",nd,st);
}
else
{
st=d%1000;
d=d/1000;
nd=d%1000;
rd=d/1000;
printf("%d,%03d,%03d",rd,nd,st);
}
return 0;
}
以下是提交列表。

第二次作业(1001.A+B Format (20))的更多相关文章
- 1001.A+B Format (20)代码自查(补足版)
1001.A+B Format (20)代码自查(补足版) 谢谢畅畅酱的提醒,发现了代码中的不足,把变量名更改成更合理的名字,并且把注释也换成英文啦! 栋哥提供的代码自查的方式也帮助了我发现很多代码中 ...
- PAT 甲级 1001 A+B Format (20)(20 分)
1001 A+B Format (20)(20 分) Calculate a + b and output the sum in standard format -- that is, the dig ...
- PAT 甲级1001 A+B Format (20)(C++ -思路)
1001 A+B Format (20)(20 分) Calculate a + b and output the sum in standard format -- that is, the dig ...
- PAT甲 1001. A+B Format (20) 2016-09-09 22:47 25人阅读 评论(0) 收藏
1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calculate ...
- 关于‘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】1001. A+B Format (20)
1001. A+B Format (20) Calculate a + b and output the sum in standard format -- that is, the digits m ...
- PAT-PAT (Advanced Level) Practise 1001. A+B Format (20) 【二星级】
题目链接:http://www.patest.cn/contests/pat-a-practise/1001 题面: 1001. A+B Format (20) Calculate a + b and ...
- 1001. A+B Format (20) (%0nd)
1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calculate ...
- 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 ...
随机推荐
- Spring security学习笔记(二)
对比两种承载认证信息的方式: session vs token token验证方案: session验证方案: session即会话是将用户信息保存在服务端,根据请求携带的session_id,从服务 ...
- 献给初学者:小白该如何学习Linux操作系统
一. 选择适合自己的Linux发行版 谈到linux的发行版别,太多了,可能谁也不能给出一个准确的数字,但是有一点是能够必定的,linux正在变得越来越盛行, 面临这么多的Linux 发行版,打算从别 ...
- MFC非模态添加进程控件方法二(自定义消息方法)
以下内容有大部分转载自CSDN,经过自己整理完成. 该文主要的方法为在非模态对话框中自定义一组消息函数,然后在主窗口中开辟一个线程通过线程把消息传递给子窗口进行更新. 在子窗口类中定义消息如下: /* ...
- 『Python基础-4』字符串
# 『Python基础-4』字符串 目录 1.什么是字符串 2.修改字符串 2.1 修改字符串大小 2.2 合并(拼接)字符串 2.3 使用乘号'*'来实现字符串的叠加效果. 2.4 在字符串中添加空 ...
- python三大神器之装饰器
装饰器的形成过程 假如你要写一个计算函数执行时间的函数,代码如下: import time def func1(): print('in func1') def timer(func): def in ...
- ruby中url解码并替换非法字符
url中中文字符解码 str = URI.decode(url_str) 替换非法字符 if ! str.valid_encoding? p str = str.encode("UTF-16 ...
- json传值给前端页面,出现堆栈溢出问题
用的com.alibaba.fastjson.JSONObject这个包 原因:JSONObject将对象转json字符串时候没有关闭循环引用导致的堆栈溢出. 解决办法是 使用这个 JSONObjec ...
- Making AJAX Applications Crawlable
https://developers.google.com/webmasters/ajax-crawling/
- 优步UBER司机全国各地奖励政策汇总 (3月21日-3月27日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 成都Uber优步司机奖励政策(1月30日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...