作业记录:

问题描述与代码已上传github仓库object-oriented文件夹下

  • 题目一览

    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 Problem的改进版,要求输出三位一逗号形式的标准数字格式。

想到可用一个变量sum存放A+B的值,然后根据sum的长度分情况讨论。

本来在想要不要开个数组来存,但是观察到本题数字范围不大,最多只会出现两个逗号的情况。于是这题就可以简单明了的经判断语句分三种情况输出。虽然好几个elseif导致代码变长了长的丑点但是毕竟会可能导致的错误也少,反正是为了解决问题不是展示编程技巧的嗯。

然后在不同情况下用变量part1,2,3存放sum被逗号分开的数值分别输出。注意到sum的正负只要part1保留即可,于是对part2,3引入头文件math.h中的abs函数。

第一组测试数据:-1000000 9

输出:-999,991

第二组测试数据:-1000000 -9

输出:-1,0,9

立刻意识到把用逗号隔开的部分放不同变量输出的时候不能再用普通整型数值输出, 只要将part2,3输出时补上%03d即可。

第一组测试数据:-1000000 -9

输出:-1,000,009

第二组测试数据:-10000 1000

输出:-9,000

第三组测试数据:-10 10

输出:0

三种情况似乎都没什么问题,于是愉快地去提交了代码。第一次提交由于不熟悉PAT无意中提交成AWK……orz

第二次改成c就A了。

最终代码:

  1. /*
  2. 三位一逗号的标准数字格式输出a+b
  3. */
  4. #include<stdio.h>
  5. #include<math.h>
  6. int main()
  7. {
  8. freopen("xx.in","r",stdin);
  9. freopen("xx.out","w",stdout);
  10. int a,b;
  11. scanf("%d%d",&a,&b);
  12. int sum=a+b;
  13. int part1,part2,part3;//逗号间隔开最多三部分
  14. if((abs(sum))<1000)
  15. printf("%d",sum);//无逗号
  16. else if((abs(sum))<1000000) //一逗号
  17. {
  18. part2=sum%1000;
  19. part1=sum/1000;
  20. printf("%d,%03d",part1,abs(part2));
  21. }
  22. else //两逗号
  23. {
  24. part3=sum%1000;
  25. sum/=1000;
  26. part2=sum%1000;
  27. part1=sum/1000;
  28. printf("%d,%03d,%03d",part1,abs(part2),abs(part3));
  29. }
  30. return 0;
  31. }

《面向对象程序设计》第二次作业(1)(A+B问题)的更多相关文章

  1. 面向对象程序设计 第二次作业<1>

    Github链接:https://github.com/zora02/object-oriented/tree/master/1001.A%2BB%20Format%20(20) 一.解题 题目 解题 ...

  2. 程序设计第二次作业<1>

    面向对象程序设计第二次作业<1> Github 链接:https://github.com/Wasdns/object-oriented 题目: <1>第一次尝试 我立马认识到 ...

  3. hdoj上的一题和程序设计第二次作业的拓展-人见人爱a+b

    hdoj上一道有意思的题目,题目: 人见人爱a+b 敲的也蛮快的,大概十分钟左右就AC了.代码如下: 人见人爱a+b #include<stdio.h> int main() { int ...

  4. C语言程序设计第二次作业--顺序结构

    C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...

  5. THE LAST ONE!! 2017《面向对象程序设计》课程作业八

    THE LAST ONE!! 2017<面向对象程序设计>课程作业八 031602230 卢恺翔 GitHub传送门 题目描述 1.时间匆匆,本学期的博客作业就要结束了,是否有点不舍,是否 ...

  6. C语言程序设计第二次作业

    一.学习内容 掌握关系运算符.逻辑运算符.条件运算符 掌握常用数学函数的用法 if语句(单分支,双分支和多分支) 用switch语句实现多分支 理解多个if语句,if...else if... 和if ...

  7. C语言程序设计第二次作业——顺序结构

    (一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 错误信息1: 错误原因:i和d位置错误 改正方法:i和d位置互换 错误信息2: 错误原因:\n后缺了一个" 改正方法:\n后加一个 ...

  8. 面向对象程序设计_课堂作业_01_Circle

    The 1st classwork of the C++ program 题目: Create a program that asks for the radius of a circle and p ...

  9. Java面向对象程序设计作业目录(作业笔记)

    持续更新中............. 我的大学笔记>>> 第1章 面向对象 >>> 1.1.5 编写Java程序,创建Dota游戏中的防御塔类,通过两个坐属性显示防 ...

  10. C语言程序设计第二次作业——

    1,编译过程过程中的错误缺引号和分号并且拼写错误. 正确结果: 2,编译过程 改正错误: 正确结果: 3,利用SIZEOF运算符求出的数据类型所占字节大小: 4,在头文件LIMITS.H中相关的编译 ...

随机推荐

  1. ASP.NET MVC 4 WebAPI. Support Areas in HttpControllerSelector

    This article was written for ASP.NET MVC 4 RC (Release Candidate). If you are still using Beta versi ...

  2. 自己实现内存操作函数memset(),memcmp(),memcpy(),memmove()

    1.memset()内存设置函数(初始化) void *my_memset(void* dest, int c, size_t count) { assert(dest != NULL); char  ...

  3. 基于核方法的模糊C均值聚类

    摘要: 本文主要针对于FCM算法在很大程度上局限于处理球星星团数据的不足,引入了核方法对算法进行优化.  与许多聚类算法一样,FCM选择欧氏距离作为样本点与相应聚类中心之间的非相似性指标,致使算法趋向 ...

  4. Android 动画 6问6答

    1.view 动画有哪些需要注意的? 答:view动画 本身比较简单.http://www.cnblogs.com/punkisnotdead/p/5179115.html 看这篇文章的第五问就可以了 ...

  5. 看人家如何拿到腾讯阿里的offer

    我是如何同时拿到阿里和腾讯offer的: https://segmentfault.com/a/1190000002627927

  6. 基于HTTP 协议认证介绍与实现

    导言 一直对http 的头认证有兴趣,就是路由器的那种弹出对话框输入账号密码怎么实现一直不明白,最近,翻了一下http 协议,发现这是一个RFC 2617的实现,所以写篇文章介绍一下吧. Http基本 ...

  7. MySQL与Oracle 差异比较之二基本语法

    基本语法 编号 类别 ORACLE MYSQL 注释 1 变量的声明方式不同 li_index NUMBER := 0 DECLARE li_index INTEGER DEFAULT 0 1. my ...

  8. view的onFinishInflate()何时调用的?

    onFinishInflate 当View中所有的子控件均被映射成xml后触发 比如你 自定义一个view叫myView ,路径是,com.test.view.MyView,此view是继承Linea ...

  9. 简单地Android中图片的三级缓存机制

    我们不能每次加载图片的时候都让用户从网络上下载,这样不仅浪费流量又会影响用户体验,所以Android中引入了图片的缓存这一操作机制. 原理: 首先根据图片的网络地址在网络上下载图片,将图片先缓存到内存 ...

  10. android技巧:EditText输入错误时该怎样提示用户

    验证用户输入内容(EditText)应该及时准确的告诉用户,那么在Android系统中提示用户通常有以下做法: 1) 使用Toast提示 1 Toast.makeText(this, "邮箱 ...