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,不用考虑整数的位数,代码简洁高效。强烈推荐这种方法!!