Description
任意给你一个整数,这个数可能很大(最长不超过100位),你能求出它的逆转数吗?
逆转数定义如下:
1.一个末尾没有0的整数,它的逆转数就是各位数字逆序输出;
2.一个负数的逆转数仍是负数;
3.一个末尾有0的整数,它的逆转数如同下例:
reverse (1200) = 2100
reverse (-56) = -65
要求定义并使用如下函数:
void reverse(char *str)
{
//函数求出str的逆转数并存入str。
}
Input
输入一个长整数str,不超过100位,输入的整数不含前导0。
Output
输出str的逆转数。输出占一行。
Sample Input
-123456789000
Sample Output
-987654321000
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; int main(int argc, char** argv)
{
char str[];
int i,flag=,count=;
gets(str);
/*输出负号*/
if(str[]=='-')
printf("-");
/*倒序输出*/
for(i=strlen(str)-;i>=;i--)
{
if(str[i]==''&&flag==)
{
count++;//用来计数0的个数
continue;//跳过
}
if(str[i]!=''||flag!=)
{
printf("%c",str[i]);
flag=;//标记尾数是否为0
} }
if(str[]!='-')
printf("%c",str[]);//最后输出第一个数
/*输出前面跳过的0*/
for(i=;i<=count;i++)
printf("");
return ;
}