任意給你一個整數,這個數可能很大(最長不超過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 }