程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> zzuli oj 1167逆轉數(指針專題),zzulioj

zzuli oj 1167逆轉數(指針專題),zzulioj

編輯:關於C語言

zzuli oj 1167逆轉數(指針專題),zzulioj


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 }

 

   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved