面向对象程序设计 ——第二次作业(1)
2016-02-01 17:11
232 查看
A+B Format
解题的思路过程
由于题目的输出加入了逗号的要求,所以所写程序的重点就是对运算的结果进行判断并修改成符合题目要求再进行输出。因为规范输出是每三个数字就有一个逗号,并且根据最多只会出现两个逗号,所以对输出结果进行判断,并且每三位分成一组。
第一次的程序
#include <stdio.h> int main() { int a,b,c,x1,x2,x3; scanf("%d%d",&a,&b); c=a+b; while(c<0) { printf("-"); c=c*(-1); } if(c<1000) { printf("%d",c); } else if(c<1000000&&c>=1000) { x1=c/1000; x2=c-x1*1000; printf("%d,%d",x1,x2); } else if(c>=1000000) { x1=c/1000000; x2=(c-x1*1000000)/1000; x3=(c-x1*1000000-x2*1000); printf("%d,%d,%d",x1,x2,x3); } return 0; }
但由于只是单纯的3个数字3个数字分开,没有考虑到单组出现全是0的情况,
例如:输入1000 1000 要求输出结果为2,000 ,但会出现2,0 的结果所以大部分测试点都出现了错误.重新考虑后将应输出的部分改为'%03d',最终得到了正确的结果。
第二次的程序
#include <stdio.h> int main() { int a,b,c,x1,x2,x3; scanf("%d%d",&a,&b); c=a+b; while(c<0) { printf("-"); c=c*(-1); } if(c<1000) { printf("%d",c); } else if(c<1000000&&c>=1000) { x1=c/1000; x2=c-x1*1000; printf("%d,%03d",x1,x2); } else if(c>=1000000) { x1=c/1000000; x2=(c-x1*1000000)/1000; x3=(c-x1*1000000-x2*1000); printf("%d,%03d,%03d",x1,x2,x3); } return 0; }
在PAT上的提交记录列表截图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/03/7b42d968a1f72e56d658d0c432744ad0.png)
总结
做完后,看了一部分同学的博客,大家的误区都差不多。总的来说,题目难度不大,侧重点是放在解题的细心和对细节的考虑上,
在学习使用markdown比较有帮助的两个网站
Markdown简易入门
Markdown在线转换器
相关文章推荐
- ember.js里的实用方法
- JVM 内存基础概念之程序计数器与 Java 虚拟机栈和本地方法栈
- Java 序列化与反序列化
- CountDownLatch、CyclicBarrier和Semaphore区别
- 动态修改ListView
- hdu1039
- 【Android基础学习】Android权限
- 设计模式六大原则
- [self presentViewController:vc animated:YES completion:nil]的相互引用问题
- 实战:用BEAST构建带分子钟的皿蛛分子系统发育树
- 移动设备默认不播放媒体文件间接解决办法
- java特种兵读书笔记(5-2)——并发之线程安全
- 关于使用NLPIR-ICTCLAS分词系统
- Hadoop 安装异常处理
- 获取Android控件的宽和高
- erlang 初体验
- 自定义View——水波纹倒影
- css篇——margin
- ios NSLog不打印设置
- Python 模块学习:os模块