這次的題目是這題

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=30782

字母往前移

輸入說明

第一行為想輸入的內容,不超過 100 個字

第二行為打完你想輸入的內容之後,換行輸入你想要往後替代的數目

輸出說明

印出轉換後的句子。

範例

Sample Input

Sample Output

How are you?

2

Jqy ctg aqw?

 

這題要注意的是

1.大小寫字母的區別

2.數字也要有後退代替

3.後退到Z之後或到9之後要從頭繼續

只要設想到以上幾點,這題就沒什麼問題了

首先宣告輸入

再來題目要求輸入的長度不能超過100

所以程式碼這樣寫

之後是用迴圈走訪字串裡面的字元

如果字元是"大寫字母"、"小寫字母"、"數字"這些情況

就要用後退替代

先宣告一個trash

int trash=input[i];

代表的意義是這個字元的ASCII code

想要後退的話,就讓trash加上需要後退的位數

也就是如果"j"後退2位的話,且"j"的trash=ASCII code是106

再來trash加上2,變成108,而108這個ASCII code對應到的是"l"(小寫L)這個字母

就達到後退的效果

接下來是程式碼

如果是小寫字母,到"z"以後必須從頭,所以加上後如果超過122則減掉26

大寫也是一樣道理,超過90減掉26

而數字則超過57的話要減掉10

最後把trash的值存回input[i]再印出,到這裡都還在迴圈裡

所以是"一個一個"字元的印出,在迴圈外面再印個換行

完整的程式碼

  1. #include <iostream>  
  2. #include <string.h>  
  3. using namespace std;  
  4.   
  5. int main()  
  6. {  
  7.     string input;  
  8.     int num;  
  9.     getline(cin,input);  
  10.     cin>>num;  
  11.     int len=input.size();  
  12.     if(len<101)  
  13.     {  
  14.         for(int i=0;i<len;i++)  
  15.         {  
  16.             int trash=input[i];  
  17.             if(trash>='a' && trash<='z')  
  18.             {  
  19.                 trash+=num;  
  20.                 if(trash>122)  
  21.                     trash-=26;  
  22.             }  
  23.             else if(trash>='A' && trash<='Z')  
  24.             {  
  25.                 trash+=num;  
  26.                 if(trash>90)  
  27.                     trash-=26;  
  28.             }  
  29.             else if(trash>='0' && trash<='9')  
  30.             {  
  31.                 trash+=num;  
  32.                 if(trash>57)  
  33.                     trash-=10;  
  34.             }  
  35.             input[i]=trash;  
  36.             cout<<input[i];  
  37.         }  
  38.         cout<<endl;  
  39.   
  40.     }  
  41.     return 0;  
  42. }  

結果

這題就完成啦

 

若想閱讀相關文章請關注我的粉絲團

小資菜鳥向前衝

https://www.facebook.com/%E5%B0%8F%E8%B3%87%E8%8F%9C%E9%B3%A5%E5%90%91%E5%89%8D%E8%A1%9D-204484273323335/?fref=ts

文章標籤
創作者介紹

cychss6305的部落格

cychss6305 發表在 痞客邦 PIXNET 留言(0) 人氣()