1.5-29数字反转
港真,其实这题不算很难(但我做了很久而且代码很..鄙人比较愚钝)
这是鄙人的代码..把一个数字循环3次..效率低下..
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n,k=0,s=0;
cin>>n;
int nn=n<0?-n:n;
for(int i=nn;i>0;i/=10){
k++;
}
int ss[k];
int kk=k;
for(int i=nn;i>0;i/=10){
k--;
ss[k]=i%10;
}
//cout<<ss[0]<<endl;
int sss=pow(10,kk-1);
for(int i=kk-1;i>=0;i--){
//cout<<ss[i]<<endl;
s+=ss[i]*sss;
sss/=10;
}
cout<<(n<0?-s:s);
}
下面是Google查来的,感觉巧妙很多。。蒟蒻学习了。。
#include <iostream>
using namespace std;
const int BASE10 = 10;
int reverse(int n)
{
int ans = 0;
while(n) { //巧在这里,当n=0即为false。。
ans *= BASE10; //比如123,我第一次得到3,后面就是30+2,在之后就是32*10+1。。。膜拜了
ans += n % BASE10;
n /= BASE10;
}
return ans; } int main() {
int n;
cin >> n;
cout << reverse(n) << endl;
return 0;
}