/*
* 数字颠倒
* 描述: 描述:
* 输入一个整数,将这个整数以字符串的形式逆序输出
* 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
* 知识点: 字符串
* 题目来源: 内部整理
* 练习阶段: 初级
* 运行时间限制: 10Sec
* 内存限制: 128MByte
* 输入:
* 输入一个int整数
* 输出:
* 将这个整数以字符串的形式逆序输出
* 样例输入: 1516000
* 样例输出: 0006151
* 完成日期:214/10/02
*/
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
bool Input(std::string &str,int &num);
bool Isvalid(std::string str,int &num);
void Transposition(int num,std::string &Tstr);
int main()
{
std::string string;
std::string Transtr;
int num = 0;
bool result = Input(string,num);
if(!result)
{
return -1;
}
Transposition(num,Transtr);
std::cout << Transtr <<endl;
system("pause");
return 0;
}
bool Input(std::string &str,int &num)
{
getline(std::cin,str,'\n');
bool result = Isvalid(str,num);
if(!result)
{
return false;
}
return true;
}
/*
* 判断输入的字符串是否为有效整型数,并将字符串转换成整型数
*/
bool Isvalid(std::string str,int &num)
{
const char* cstring;
int len = str.size();
char c;
int begin = 0;
int end = len;
/* 剔除有效字符前面的空格和制表符 */
for(int j=0;j<len;j++)
{
c = str.at(j);
if((c==32) || (c==9))
{
begin++;
continue;
}
break;
}
/* 剔除有效字符后面的空格和制表符 */
for(int k=len-1;k>0;k--)
{
c = str.at(k);
if((c==32) || (c==9))
{
end--;
continue;
}
break;
}
/* 判断有效字符中是否有非法输入 */
for(int i=begin;i<end;i++)
{
c = str.at(i);
if(!((c>=48 && c<=57) || (c==43) || (c==45))) /* 有效字符可以是正负0到9 */
{
return false;
}
}
std::string substr = str.substr(begin,(end-begin));
cstring = substr.c_str();
num = atoi(cstring);
if(num<0)
{
return false;
}
return true;
}
void Transposition(int num,std::string &Tstr)
{
char c;
while((num/10!=0))
{
c = 48 + (num%10); /* 将数字0到9转换成字符0到9 */
Tstr.push_back(c);
num = num/10;
}
c = 48 + num;
Tstr.push_back(c); /* 最高位 */
return;
}