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. MySQL学习之备份

    MySQL数据库备份与还原 数据库备份也叫SQL数据备份,备份的结果都是SQL指令. 在MySQL中专门提供了一个用于数据库备份的SQL客户端:mysqldump.exe(MySql document ...

  2. PHP各环境下的伪静态配置

    一.Apache的伪静态配置 1.网站根目录下需要有 .htaccess 文件,没有则自己创建一个,内容为 <IfModule mod_rewrite.c> RewriteEngine o ...

  3. Qt中的QString和QStringList常用方法

    QString //QString定义 QString s1 = "abc"; QString s2("hello"); //字符串连接 QString s = ...

  4. Scala-元组操作

    package com.bigdata object TupleMapO { def main(args: Array[String]): Unit = { // 元组:Tuple,就是由()包起来, ...

  5. angularjs compile vs link

    https://docs.angularjs.org/guide/directive https://docs.angularjs.org/api/ng/service/$compile https: ...

  6. 使用Nginx+uWSGI+Django方法部署Django程序

    第一步先解决uwsgi与django的桥接.解决在没有nginx的情况下,如何使用uwsgi+DJANGO来实现一个简单的WEB服务器. 第二步解决uwsgi与Nginx的桥接.通过nginx与uws ...

  7. python基础学习1-反射

    #!/usr/bin/env python # -*- coding:utf-8 -*- getattr(),hasattr(),delattr(),setattr() #反射:基于字符串的形式去对象 ...

  8. cifar数据集介绍及到图像转换的实现

    CIFAR是一个用于普通物体识别的数据集.CIFAR数据集分为两种:CIFAR-10和CIFAR-100.The CIFAR-10 and CIFAR-100 are labeled subsets ...

  9. ELK批量删除索引

    一.存在问题 用了一段时间elk发现如果索引长时间不删除,elk会越来越慢,重启elasticsearch服务器节点之前同步时间也会很长 二.解决方法(定期删除索引) 1.在elasticsearch ...

  10. 指定路由器(DR/BDR)和非指定路由器(DROTHER)的区别

    一:名词解释 DR:designated router 指定路由器. BDR:backup designated router 备份指定路由器. 二:DR/BDR出现的缘由 在广播网和NBMA网络中, ...