数字反转(升级版)
2015-07-24 22:57
260 查看
题目来源:洛谷
http://www.luogu.org/problem/show?pid=1553
题目:给定一个数,请将该数各个位上数字反转得到一个新数。
这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数之改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为0(除非小数部分除了0没有别的数,那么只保留1个0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为0),本次没有负数。
题目分析:这道题不难,但是稍微有点麻烦,需要细心,毕竟暑假里还是有点烦躁的。
代码还是比较长的……
http://www.luogu.org/problem/show?pid=1553
题目:给定一个数,请将该数各个位上数字反转得到一个新数。
这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数之改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为0(除非小数部分除了0没有别的数,那么只保留1个0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为0),本次没有负数。
题目分析:这道题不难,但是稍微有点麻烦,需要细心,毕竟暑假里还是有点烦躁的。
# include <iostream> # include <string.h> using namespace std; int main() { int n=-1; char a[50]; char b[50]; char t; char ch='a'; cin>>a; int lena=strlen(a),lenb; for(int i=0;i<lena;i++) { if(a[i]=='/') { ch='/'; n=i; } else if(a[i]=='.') { ch='.'; n=i; } else if(a[i]=='%') ch='%'; } if(ch=='a') { lena--; while(a[lena]=='0') { a[lena]='\0'; lena--; } if(lena==-1) a[0]='0'; lena=strlen(a); for(int i=0;i<lena/2;i++) { t=a[i]; a[i]=a[lena-i-1]; a[lena-i-1]=t; } cout<<a<<endl; } else if(ch=='/'||ch=='.') { strcpy(b,a+n+1); a ='\0'; lena=strlen(a)-1; while(a[lena]=='0') { a[lena]='\0'; lena--; } if(lena==-1) a[0]='0'; while(b[0]=='0') { strcpy(b,b+1); } lena=strlen(a); lenb=strlen(b); if(lenb!=0) lenb--; while(b[lenb]=='0') { b[lenb]='\0'; lenb--; } lenb=strlen(b); if(lenb==0) b[0]='0'; for(int i=0;i<lena/2;i++) { t=a[i]; a[i]=a[lena-i-1]; a[lena-i-1]=t; } for(int i=0;i<lenb/2;i++) { t=b[i]; b[i]=b[lenb-i-1]; b[lenb-i-1]=t; } cout<<a<<ch<<b<<endl; } else if(ch=='%') { a[lena-1]='\0'; lena=lena-2; while(a[lena]=='0') { a[lena]='\0'; lena--; } if(lena==-1) a[0]='0'; lena=strlen(a); for(int i=0;i<(lena)/2;i++) { t=a[i]; a[i]=a[lena-i-1]; a[lena-i-1]=t; } cout<<a<<ch<<endl; } return 0; }
代码还是比较长的……
相关文章推荐
- 2015.7.24 改正后的稍简陋通讯录
- gadget编码与单元测试和service编写示例
- 计数排序、桶排序和基数排序
- java 之CPU~CPU缓存(转)
- bzoj2654
- java 选择排序
- 最新期货交易时间表
- You must supply a layout_width attribute.解决办法
- [整理] 安装完 Ubuntu 15.04 后要做的几件事
- DirectUI界面编程(四)界面布局详解
- DirectUI界面编程(四)界面布局详解
- 我的cocos2之旅 第一天(环境的安装以及Hello World)
- 黑马程序员--面向对象01
- Font Awesome 字体的以及 图标的使用总结
- DirectUI界面编程(四)界面布局详解
- 性能调优利器之strace
- TCP三次握手与防火墙规则
- java 实现冒泡排序
- fetch bulk collect into 批量效率的读取游标数据【转载】
- [LeetCode]Product of Array Except Self