2015-08-20 19 views
1

我不知道如何去做這件事,但是我怎樣才能從用戶輸入的某些次數在abcs中從一個角色移動到另一個角色呢?我怎樣才能把它放在一個圈子裏? (就像如果char是Z,將編譯器知道它應該去並重新開始?)如何旋轉字符的一定數量的字母?

在此先感謝

int encode(int ch, int shift); 

    printf(Move the characters to the right or left? "%c/n"); 

if (right){ 

    printf (Rotate right by how much? "%i/n"); 
    scanf ("%i"); 
     if (%i >= 1){ 
      %i++; 
     } else if (%i <= 1) 
      %i--; 
    } 


} else if (left) { 
    printf (Rotate left by how much? "%i/n"); 
    scanf ("%i"); 
     if (%i >= 1){ 
      %i++; 
     } else if (%i <= 1) 
      %i--; 
} 

回答

0

我假設你有一個基於你的代碼很少的編程經驗,所以我會詳細解釋一下這個簡單的問題是如何解決的。

我寫的C語言代碼:

char encode(char letter, int shift){ 

    char direction[6]; 

    printf("Move the characters to the left or right (left/right)? "); 
    scanf("%s", direction); 

    if(strcmp(direction, "left") == 0){ 
     if((letter - shift) < 'A') 
      return (letter - shift) + 26; 
     else 
      return letter - shift; 

    } else if(strcmp(direction, "right") == 0) { 
     if((letter + shift) > 'Z') 
      return (letter + shift) - 26; 
     else 
      return letter + shift; 

    } else 
     printf("UNKNOWN COMMAND!\n"); 

    return letter; 
} 

檢查,它說行:

if((letter - shift) < 'A') 

這意味着,如果你低於轉移'A'你需要加26(字母表中的字母數)以獲得正確的字母。

同樣的道理也適用在這裏,但你檢查,如果你上面的「Z」所以扣除26去正確的字母轉移

if((letter + shift) > 'Z') 

不然,如果你是在「A的邊界'和'Z'只是添加/減去當前字母的移位。

我向大家展示了一個大寫字母的例子,但同樣的事情適用於較低的字母。

+0

如果您認爲我已回答您的問題,請通過將問題標記爲已接受來關閉主題。 – Hiti3

相關問題