代码文件及题目描写已放至此

一开始看题目的时候有点没看懂,要求把数分组是什么意思。如果只是单纯的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;
}

以下是提交列表。

最新文章

  1. java web.xml配置详解
  2. 有关C# struct的一个误区
  3. MVVM ObservableCollection&lt;&gt; ListView
  4. C#中WinForm窗体事件的执行次序
  5. 《奥威Power-BI智能分析报表制作方法》精彩回顾
  6. Ubuntu 安装 fcitx 输入法
  7. POI 设置EXCEL单元格格式(日期数字文本等)
  8. iOS Vuforia:TextReco 增加自己的单词库
  9. archlinux安装输入法需要的包及archlinux无法使用输入法的解决
  10. Linux sed命令实例详解
  11. leetcode 109 Convert Sorted List to Binary Search Tree ----- java
  12. nutch安装配置
  13. Modifying the ASP.NET Request Queue Limit
  14. 解决win service 2003 IIS发布Gis网站后,访问地图服务出错,无法正常打开而且 事件查看器出现错误提示。
  15. MySQL导入导出命令
  16. BZOJ 1455: 罗马游戏( 配对堆 + 并查集 )
  17. 【蓝牙数据采集模块】-01-Sensor Controller 功能介绍
  18. .NET遇上Docker - Harbor的安装与基本使用
  19. Android开发——xml知识之xml可绘制对象简介
  20. Kali安装使用文泉驿字体

热门文章

  1. javascript最常用的对象创建方式
  2. 纯JS实现轮播图特效——详解
  3. 【Hive三】Hive理论
  4. MapReduce输入输出的处理流程及combiner
  5. Drill-On-YARN
  6. I2C驱动
  7. Python学习手册之__main__ 模块,常用第三方模块和打包发布
  8. Python学习:11.Python装饰器讲解(二)
  9. 4-c++教程起航篇-学习笔记
  10. 2017Facebook面试题改编“一面砖墙 ”