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;  
} 

标签: none

添加新评论