数字反转(升级版)
来源:互联网 发布:vue.js可视化表单设计 编辑:程序博客网 时间:2024/06/10 10:06
题目来源:洛谷
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[n]='\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;}
代码还是比较长的……
1 0
- 数字反转(升级版)
- 数字反转(升级版)
- 数字反转升级版
- 洛谷P1553 数字反转(升级版)
- P1553 数字反转(升级版)(洛谷)
- P1553 数字反转(升级版)
- P1553 数字反转(升级版)
- lg P1553 数字反转(升级版)
- P1553 数字反转(升级版)
- string - 数字反转升级版
- <NOIP> 19 . P1553 数字反转(升级版)
- 新手村 简单字符串 数字反转(升级版)
- 数字反转(水)
- 数字反转(新)
- 九度OJ 1089:数字反转 (数字反转)
- noip2011 数字反转 (模拟)
- Working out (数字三角形升级版)
- 数字反转
- 使用Lua 局部变量来优化性能,同时比较局部变量和全局变量
- 计数排序、桶排序和基数排序
- hdu 1023 卡特兰数
- Struts2学习记录-Value Stack(值栈)和OGNL表达式
- 数据结构链表——双链表
- 数字反转(升级版)
- Android开发环境配置问题
- struts2jar包作用
- Ognl的讲解
- Oracle EBS(ERP)行业分工(写给猎头)
- LeetCode之Decode Ways
- hdoj 1002 大数加法问题
- 第三章:验证码问题
- ios autolayerout