pat考试准备一_两个数字和的标准化输出
2015-12-16 11:03
387 查看
今天是开通博客的第一天,也是准备明年pst编程能力的第一天,为了能明年3月份拿到一个不错的成绩,从今天开始更新自己的小白博客,同时将自己的代码同步到Github上管理。
不多说了, 先上题。
乍一看,就是一个数字的标准化输出,挺简单的。(到了后面才发现自己想的太单纯。)马上想到的思路是,先对a和b进行相加得到和sum,对sum进行判断,若
sum小于0,输出一个“-”,反之不进行操作,然后将sum进行模1000操作,并存入数组arr中,在进行sum除以1000操作,若商大于1000,在进行一次模1000,除以1000的操作,若商小于1000,将商存入下一个数组的下一个值中,这样就将sum值进行划分完成,接着再将数组逆向输出即可。上代码
在测试后,存在如下问题:
1.输入-1,1后会输出0,0
2.输入999后,会输出1,0
3.输入9999999后,会输出10,0,0
问题存在原因大概有这么两点:1.当sum是0时,会将sum[0]和sum[1]都设置成0
2.若sum是1000时,sum%1000=0,将sum[0]设置成0后,未将其格式化输出,导致输出1,0
综合以上问题以及原因,修改代码如下
经测试,代码运行通过
好,第一天分享就到这里,
个人github托管地址:https://github.com/GuanyuLi
不多说了, 先上题。
乍一看,就是一个数字的标准化输出,挺简单的。(到了后面才发现自己想的太单纯。)马上想到的思路是,先对a和b进行相加得到和sum,对sum进行判断,若
sum小于0,输出一个“-”,反之不进行操作,然后将sum进行模1000操作,并存入数组arr中,在进行sum除以1000操作,若商大于1000,在进行一次模1000,除以1000的操作,若商小于1000,将商存入下一个数组的下一个值中,这样就将sum值进行划分完成,接着再将数组逆向输出即可。上代码
#include <iostream> #include<stdio.h> using namespace std; int main() { int a, b ; scanf("%d",&a); scanf("%d",&b); int sum = a+ b; int arr[10] , i = 0; if(sum < 0){ cout<<"-"; sum = sum * (-1); } for( i = 0; ; i++){ arr[i] = sum % 1000 ; sum = sum / 1000; if(sum < 1000){ arr[i + 1] = sum % 1000 ; sum = sum / 1000; break; } } for( int j = i + 1 ; j >=0 ;--j){ printf("%d",arr[j]); if( j != 0 ){ printf(","); } } return 0; }
在测试后,存在如下问题:
1.输入-1,1后会输出0,0
2.输入999后,会输出1,0
3.输入9999999后,会输出10,0,0
问题存在原因大概有这么两点:1.当sum是0时,会将sum[0]和sum[1]都设置成0
2.若sum是1000时,sum%1000=0,将sum[0]设置成0后,未将其格式化输出,导致输出1,0
综合以上问题以及原因,修改代码如下
#include <iostream> #include<stdio.h> using namespace std; int main() { int a, b ; scanf("%d",&a); scanf("%d",&b); int sum = a+ b; int arr[10] , i = 0 ,j , k; if(sum < 0){ printf("-"); sum = sum * (-1); } for( i = 0; ; i++){ arr[i] = sum % 1000 ; sum = sum / 1000; if(sum < 1000 && sum != 0){ arr[i + 1] = sum % 1000 ; sum = sum / 1000; break; }else if(sum == 0){ i = i -1 ; break; } } j = i + 1; k = j; if( j == 0){ printf("%d",arr[j]); }else{ for( j ; j >=0 ;--j){ if(k == j){ printf("%d",arr[j]); printf(","); }else{ if( j != 0 ){ printf("%03d",arr[j]); printf(","); }else{ printf("%03d",arr[j]); } } } } return 0; }
经测试,代码运行通过
好,第一天分享就到这里,
个人github托管地址:https://github.com/GuanyuLi
相关文章推荐
- 查看github pages文档的方式
- 使用BAE的基于Web.py的简单博客程序
- 两分钟学会如何在github托管代码
- github配置使用指南
- github版本库使用详细图文教程(命令行及图形界面版)
- python使用心得之获得github代码库列表
- C语言实现的轻量级brainfuck语言解释器
- My Machine Learning
- 机器学习---学习首页 3ff0
- 利用GitHook构建持续交付和部署
- Android projects on Github
- git 提交步骤记录(oschina&github)
- 本人的一些有用的东西的汇总
- 各种github头像,找一个适合你的!
- git+github创建分支&提交并贡献代码(linux环境)
- 巧用ViewPagerIndicator
- github 走起