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
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 7 int main(int argc, char** argv) 8 { 9 char str[101]; 10 int i,flag=0,count=0; 11 gets(str); 12 /*输出负号*/ 13 if(str[0]==‘-‘) 14 printf("-"); 15 /*倒序输出*/ 16 for(i=strlen(str)-1;i>=1;i--) 17 { 18 if(str[i]==‘0‘&&flag==0) 19 { 20 count++;//用来计数0的个数 21 continue;//跳过 22 } 23 if(str[i]!=‘0‘||flag!=0) 24 { 25 printf("%c",str[i]); 26 flag=1;//标记尾数是否为0 27 } 28 29 } 30 if(str[0]!=‘-‘) 31 printf("%c",str[0]);//最后输出第一个数 32 /*输出前面跳过的0*/ 33 for(i=1;i<=count;i++) 34 printf("0"); 35 return 0; 36 }
时间: 2024-12-24 05:17:35