Github链接:https://github.com/heihuifei/object-oriented

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

Input

Each input file contains one test case. Each case contains a pair of integers a and b where -1000000 <= a, b <= 1000000. The numbers are separated by a space.

Output

For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.

Sample Input

-1000000 9

Sample Output

-999,991

首先说下这个题目写的时候出现了让我很头大的事情:又发生了看错题目意思的问题,所以我才好几天才写这篇随笔。

题目大致意思:算A+B和的值,然后用一种标准的形式(这里我不得不说太坑了)输出结果。标准形式:一个数从右边开始每三位一个逗号,除非少于4位数。

大致思路及过程:其实如果知道了题目的意思的话,写起来还算简单的,用和数分别除以1000,1000000的余数得到的不到三位的补0前面满三位这个思路就可以写出来。至于说解此题的过程是经历了一段奇葩之路,开始一直以为是和数最后从左往右每三位一个逗号,然后就会发现结果明明一直是对的,可是就是一直有bug。最后熬了几天之后,实在不相信自己哪里还错了,咨询了我的班导,她和我说出了此题的正确意思。之后我解题的速度就比较正常了。

#include<stdio.h>
int main()
{
int b,c,temp,rem,cmo=1,contral=0;
int a[10],i,n;
scanf("%d %d",&b,&c);
temp=b+c;
if(temp<0)
{
contral=1;
temp=-temp;
}
for(i=0;temp!=0;i++)
{
rem=temp%10;
temp/=10;
a[i]=rem;
n=i;
}
if(contral==1)
printf("-");
for(i=n;i>=0;i--,cmo++)
{
printf("%d",a[i]);
if(cmo%3==0)
printf(",");
}
return 0;
}

这两张是在最开始理解错了题目意思的情况下(也就是输出从左往右逗号),最后发现了输出结果会在最后还输出一个逗号。

#include<stdio.h>
int main()
{
int b,c,temp,rem,cmo=1,contral=0;
int a[10],i,n;
scanf("%d %d",&b,&c);
temp=b+c;
if(temp<0)
{
contral=1;
temp=-temp;
}
for(i=0;temp!=0;i++)
{
rem=temp%10;
temp/=10;
a[i]=rem;
n=i;
}
if(contral==1)
printf("-");
for(i=n;i>=0;i--,cmo++)
{
printf("%d",a[i]);
if(cmo%3==0&&cmo<n-1)
printf(",");
}
return 0;
}



经过修改后提交发现还是有错,然后我自己又继续寻找bug,发现如果和数为0的时候,会出现没有输出的情况。

int main()
{
int b,c,temp,rem,cmo=1,cmonum,contral=0;
int a[20],i,n;
scanf("%d %d",&b,&c);
temp=b+c;
if(temp<0)
{
contral=1;
temp=-temp;
}
if(temp==0)
printf("0");
for(i=0;temp!=0;i++)
{
rem=temp%10;
temp/=10;
a[i]=rem;
n=i;
}
if(contral==1)
printf("-");
cmonum=n/3;
for(i=n;i>=0;i--,cmo++)
{
printf("%d",a[i]);
if(cmo%3==0&&cmonum!=0)
{
printf(",");
cmonum--;
}
}
printf("\n");
return 0;
}

然后我把所有的都改好了之后,可是提交上去还是只有13分(因为我的题目意思理解错了),经过几天的挣扎后,问过班导之后才发现是这个问题。

#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,p,q,t,C;
scanf("%d %d",&a,&b);
c=a+b;
C=abs(c);
if(C<1000&&C>=0)
printf("%d",c);
else if(C>=1000&&C<1000000)
{
p=c%1000;
q=c/1000;
printf("%d,%03d",q,p);
}
else if(C>=1000000&&C<=2000000)
{
p=c%1000;
q=(c/1000)%1000;
t=c/1000000;
printf("%d,%03d,%03d",t,q,p);
}
printf("\n");
return 0;
}

之后知道题目正确的意思之后就我打了一遍,发现第一个测试点没过,经过几轮的排查之后,知道了测试数据没有过,是我的取余数的时候负号算错了,没有加绝对值。测试结果如下:



还有这个是不知道什么时候在哪个代码里发现的bug:



之后经过修改后终于修成正果:

#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,p,q,t,C;
scanf("%d %d",&a,&b);
c=a+b;
C=abs(c);
if(C<1000&&C>=0)
printf("%d",c);
else if(C>=1000&&C<1000000)
{
p=abs(c%1000);
q=c/1000;
printf("%d,%03d",q,p);
}
else if(C>=1000000&&C<=2000000)
{
p=abs(c%1000);
q=abs(c/1000)%1000;
t=c/1000000;
printf("%d,%03d,%03d",t,q,p);
}
return 0;
}



总的提交列表(如下)一看,发现过程真是艰难啊,一开始编译器测试显示编译错误,之后的波折上面也已经做出陈述。



总结:虽然这次作业比较简单,但是因为各种问题所以收获还是很大的,也说明了在经过期末考试之后我的编程题做得是很少的。另外还是要对英文题多加练习,多在老师学提供的各种平台上进行练习。

寒假作业第二篇随笔(A+B)的更多相关文章

  1. linux-0.11分析:boot文件 setup.s 第二篇随笔

    boot文件 setup.s 第二篇随笔 参考 [github这个博主的][ https://github.com/sunym1993/flash-linux0.11-talk ] 中断获取光标的位置 ...

  2. 寒假作业第二组P&&Q&&R题解

    P的题意是有M份作业,这些作业有不同的截止日期,超过截止日期完成,不同的作业有不同的罚分,求如何完成罚分最低. 首先,从截止日期最长的那个作业到截止日期,这些天数是固定的,所做的就是把这些作业填进这些 ...

  3. 寒假作业第二组C题题解

    这道题题意很简单,主要是练习map的使用.看输入有三个数据,水果名,地名,和出现次数.再看输出,很容易想到map<string,int> string是水果,int是次数,那个地名怎么用m ...

  4. FJUT寒假作业第二周C题解(位运算)

    题目来源:http://210.34.193.66:8080/vj/Contest.jsp?cid=161#P2 题意比较好理解.如果直接按题目要求一步一解.一定超时.作为一个懒人也不会这么暴力一个肯 ...

  5. FJUT寒假作业第二周G题解快速幂

    题目来源:http://210.34.193.66:8080/vj/Contest.jsp?cid=161#P6     题意:求n个数字的乘积对c取摸.主要就是有快速幂扩展到广义幂的过程. 首先题目 ...

  6. 第一次c++团队合作项目第二篇随笔

    随着时间的推移,项目也逐渐展开.我的地图也通过按钮的拼接完成了一小部分.这部分我是用了QT上的按钮类来实现的.接下来就是给按钮贴上图片,然后最重要也是最困难的是实现参数的传递,如何实现点击一个英雄或小 ...

  7. Hdu1015&&寒假作业第二组I题

    题意是A-Z对应1-26,然后给个目标数字和字符串,看看字符串里的某5个字符的组合能不能使v - w^2 + x^3 - y^4 + z^5 = target等式成立,其实多写几个循环也可以达到目的, ...

  8. 寒假作业第二组E题题解

    注意看题,注意看题,注意看题.重要的事情三遍感觉都不够.不怕大家笑话,这道题RuntimeError 9次,我一直以为是哪里越界了,结果最后发现的时候,真是无语了,题目里说了,所有的integer都不 ...

  9. 20155301-滕树晨 第二次随笔作业--从现有技能获取的经验应用于JAVA中

    第二次随笔--从现有技能获取的经验应用于JAVA中 你有什么技能比大多人(超过90%以上)更好? 这个想了半天,有一个是我乒乓球还是比较擅长的,在学校里可能比百分之90的人要强,在外面肯定是不如了.再 ...

随机推荐

  1. Linux虚拟机下安装Oracle 11G教程

    1.安装环境 操作系统:Red hat 6.5 内存:内存最低要求256M (使用:grep MemTotal /proc/meminfo 命令查看) 交换空间:SWAP交换空间大小根据内存大小决定( ...

  2. 0CO_PC_01 成本对象控制: 计划/实际数据

    用户提出要取生产订单的成本分析明细,分析目标和实际的差异. 查了一下,可以使用 BW标准数据源:0CO_PC_01 其中,值类型:10(实际).20(计划).30(目标) 货币类型:20(成本控制范围 ...

  3. Linux学习笔记(第十二章)

    grep进阶 grep:以整行为单位进行截取 截取的特殊符号 正规表示法特殊字符 注意: sed用法 格式化打印 awk 用法 diff档案对比: path旧文档升级为新文档

  4. webdriver 获取页面response

    在selenium webdriver实现自动化抓取数据过程中,发现无法从webdriver获取页面response 查来查去最终在 stackoverflow 上找到了这一篇文章 文章中说:webd ...

  5. 微信小程序页面传多个参数

    在需要页面之间传递多个参数的时候,需要用&链接起来,上一页的正确跳转代码如下: var that = this; wx.navigateTo({ url: '../../pages/myLis ...

  6. 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践

    20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...

  7. ZJOI2018 round^2 游记

    Day0 一早起来6点左右,吃完早饭去班里拿了书包就来机房,说实话怕被打[手动滑稽]. 在车上大约经历了3个半小时的车程,终于到达了目的地:余姚.当然基本上大家的设备电量都不多了,除了某些上车睡觉的大 ...

  8. EDB*Plus的client_encoding问题

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页 [作者 高健@博客园  luckyjackga ...

  9. STM32通用定时器配置

    一.STM32通用定时器原理 STM32 系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生.其它6个 ...

  10. Gitlab+Jenkins学习之路(十二)之Maven的私有仓库Nexus

    1.什么是Nexus? 在前面进行maven项目的构建中,可以看到在构建的过程中需要安装maven的依赖插件,如图: 而在maven的默认配置中是在官网的中央仓库和第三方的maven仓库进行下载,速度 ...