2011年4月28日 星期四

a038: 數字翻轉

內容 :
輸入任意數字,並將其數字全部倒轉

輸入說明 :
一個整數,不超過 2^31

輸出說明 :
翻轉過後的數字

範例輸入 :
12345

範例輸出 :
54321

程式碼 :
#include <stdio.h>
#include <string.h>
int main()
{
    int i,len;
    char s1[15],s2[15];
    
    while(gets(s1)!=NULL)
    {
        len = strlen(s1);
        for(i=0;i<len;i++)
            s2[i] = s1[len-i-1];
        s2[len] = '\0';
        for(i=0;s2[i]=='0';i++);
        printf("%s\n",s2+i);
    }
    return 0;
}


http://zerojudge.tw/ShowProblem?problemid=a038

2 則留言:

  1. 可以講解一下嗎?感恩

    回覆刪除
    回覆
    1. len = strlen(s1); //取得s1的長度
      for(i=0;i<len;i++) //反轉字串
      s2[i] = s1[len-i-1]; //當i=0時,把s1的最後一個丟給s2的第一個,後面的以此類推
      s2[len] = '\0'; //把s2加上中止符號
      for(i=0;s2[i]=='0';i++); //我們序要把前面是0的數字去掉,例如:005,我們應該輸出5
      printf("%s\n",s2+i);//從s2+i的位置把字串印出來,假設今天005這個字串是放在100這個位置上,但是我們今天只要印出5,我們需要幫100+2,就可以從102開始印我們要的字串

      刪除