任意給你一個整數,這個數可能很大(最長不超過100位),你能求出它的逆轉數嗎?
逆轉數定義如下:
1.一個末尾沒有0的整數,它的逆轉數就是各位數字逆序輸出;
2.一個負數的逆轉數仍是負數;
3.一個末尾有0的整數,它的逆轉數如同下例:
reverse (1200) = 2100
reverse (-56) = -65
要求定義並使用如下函數:
void reverse(char *str)
{
//函數求出str的逆轉數並存入str。
}
輸入一個長整數str,不超過100位,輸入的整數不含前導0。
輸出str的逆轉數。輸出占一行。
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 }