簡體   English   中英

查找具有三個連續字母的單詞

[英]Finding words with Three consecutive alphabetical letters

編寫一個 function 打印出作為參數傳入的數組中的所有單詞,其中包含 3 個連續字母的序列,這些字母也按字母順序連續。 例如,服裝這個詞應該被打印出來,而不是成本。 數組將以 Null 結尾,可用於終止算法

我無法弄清楚為什么我從當前代碼中沒有收到 output。 我的思考過程是將數組傳遞的單個字符串中的所有字符轉換為它們的 ascii 形式。 在 ascii 中,我可以通過添加或減去然后與原始 ascii 字符進行比較來比較連續字母是否按字母順序排列。

for(int i = 0; words[i] != '\0'; i++)   {
    int wordLength = strlen(words[i]);


    if(wordLength > 2)  {
        for(int j = 0; j < wordLength; j++) {

            int asciiOne = (int)words[i][j];
            int asciiTwo = (int)words[i][j+1];
            int asciiThree = (int)words[i][j+2];

            if(asciiOne == asciiTwo -1 == asciiThree -2 || asciiOne == asciiTwo -1 == asciiThree -2)    {
                printf("%s\n",words[i]);
            }
        }
    }
}

if(asciiOne == asciiTwo -1 == asciiThree -2 || asciiOne == asciiTwo -1 == asciiThree -2)

這在 C 中是不正確的。 如果滿足第一個條件( asciiOne == asciiTwo -1 ),那么它會給出 1。之后,它會檢查1 == asciiThree -2這當然不是我們想要的。 正確的方法是:

if((asciiOne == asciiTwo -1) && (asciiTwo == asciiThree -1))

通過這種方式,它評估問題中所需的兩個條件。

編輯 - 添加括號以指定將評估的順序條件。 我們還可以刪除括號,因為==的優先級高於&& 來源 - C 運算符優先級

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM