20、寫一個函數,取一個整數值並返回此整數的各數字反序的數值
//寫一個函數,取一個整數值並返回此整數的各數字反序的數值
#include<iostream>
#include<stdint.h>
using namespace std;
//int reverse_m1(int x)
//{
// int y;
// if(x>0 && x<10)
// {
// y = x ;
// return y;
// }
// else if (x>9 && x<100)
// {
// y = x/10 + x%10*10;
// //cout << x/10 << " " << x%10*10 << " " << x/10 + x%10*10 << endl;
// return y;
// }
// else if(x>99 && x<1000)
// {
// y = x/100 + x/10%10*10 + x%10*100;
// return y;
// }
// else
// {
// cout << "超出範圍,該整數不在0-1000以內" << endl;
// }
//}
//int reverse_m2(int x)
//{
// for(int i=0; i<10; i++)
// for(int j=0; j<10; j++)
// for(int k=0; k<10; k++)
// {
// if(x==i*100+j*10+k)
// {
// //if(x>0 && x<10) return x;
// //if(x>9 && x<100) return k*10+j;
// //if(x>99 && x<1000) return k*100+j*10+i;
// if(i==0)
// {
// if(j==0)
// return x;
// else
// return k*10+j;
// }
// else
// return k*100+j*10+i;
//
// }
//
// }
//}
int reverse_m3(int n)
{
int s = 0;
while(n)
{
s = s*10 + n%10;
n /= 10;
}
return s;
}
int main()
{
cout<< "請輸入一個整數:" ;
int x;
cin >> x;
//cout << reverse_m1(x) << endl;
cout << "反序數爲:" << reverse_m3(x) << endl;
//getchar();
system("pause");
return 0;
}
題目來源:50道C++編程練習題及解答
總結
1、兩種函數寫法都可以求1-1000以內任意整數的反序數,函數一先判斷是幾位數,然後有求整、求語運算求各個位的數;函數二用三個for()循環列出0-1000的所有數與輸入的整數一一比較,採用從高位數是否爲0來判斷位數,判斷條件較函數一簡潔;
2、函數三源於參考代碼,求餘取得整數的各位數,循環*10,不用考慮整數的位數,代碼簡潔高效。強烈推薦這種方法!!