3:数字反转
2017-08-10 13:18
232 查看
3:数字反转
总时间限制: 1000ms 内存限制: 65536kB描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入
输入共 1 行,一个整数N。
-1,000,000,000 ≤ N≤ 1,000,000,000。
输出
输出共 1 行,一个整数,表示反转后的新数。
样例输入
样例 #1:
123
样例 #2:
-380
样例输出
样例 #1:
321
样例 #2:
-83
#include<iostream> #include<stdio.h> #include<string> #include<algorithm> using namespace std; //http://cxsjsxmooc.openjudge.cn/2017t1summerw4/3/ //程序写的真垃圾,strrev不能在oj上面用,只能改成reverse //注意输入是1000这种情况,要把0全部去掉 string a; int len,flag,len2; int main(){ while(cin>>a){ flag=1; len=a.size(); if(!isdigit(a[0])){ flag=0; len--; } if(len==1)cout<<a<<endl; else { reverse(a.begin(),a.end()); if(a[0]=='0'){ if(!flag) cout<<"-"; int k=0; while(a[k]=='0')k++; for(int i=k;i<len;i++){ cout<<a[i]; } cout<<endl; } else{ if(!flag) cout<<"-"; for(int i=0;i<len;i++){ cout<<a[i]; } cout<<endl; } } } }
9.14号又写了一遍
#include<iostream> #include<string.h> using namespace std; //http://noi.openjudge.cn/ch0105/29/ char a[30]; int k,len; int main(){ cin>>a; len=strlen(a); if(a[0]=='0'){ cout<<"0"<<endl; return 0; } if(a[0]=='-'){ cout<<"-"; } k=len-1; while(a[k]=='0'){ k--; } for(int i=k;i>=0;i--){ if(a[i]!='-'){ cout<<a[i]; } } cout<<endl; }
一心想着要用char数组,结果这么复杂,看看人家直接用整数在做的方法,简单的不行。
思路:判断是否是负数,如果是负数,输出一个“-”号,再变为正数进行计算
计算过程:用一个数s来计算需要反转的数的从后往前的每一位,每次除以10求余,就得了。
#include<stdio.h> int main() { int x,s=0; scanf("%d",&x); if(x<0)//判断是否负数 { printf("-");//是,输出一个负号 x=x*(-1);//变为正数 } while(x>0)//循环到这个数小于等于0为止 { s=s*10+x%10;//计算每一位 x=x/10;//每次要除以10 } printf("%d",s);//输出即可 return 0; }
相关文章推荐
- 关于数字反转代码汇总
- 数字反转
- 九度 oj 题目1089:数字反转
- P1756 数字反转
- 数字的反转
- 实现将整形数字反转
- 第三周Reverse Integer反转数字
- NOIP2011复赛普级组&nbsp;数字反转
- 编写程序实现数字反转
- 数字反转
- 将整形数据转换为反转数字字符串输出
- Java实现字符串中的连续数字的反转
- 题目1089:数字反转
- 网易笔试题之数字反转(数学真的奇妙)
- 新手村 简单字符串 数字反转(升级版)
- 【模拟】[NOIP2011普及组]数字反转
- P1307 数字反转 luogu
- c基础【一】利用位运算实现数字反转
- 数字反转(升级版)
- NOIP2011复赛普级组&nbsp;数字反转