簡體   English   中英

C編程問題

[英]C programming issue

我創建了一個簡單的猜謎游戲。 選擇一個0到100之間的數字,具體取決於您輸入的數字,程序將輸出熱,暖,冷或正確! 我選擇的正確答案是51。我的程序可以編譯並運行,但始終輸出正確! 輸入的每個值。 如果您願意的話,感謝您的幫助。

    int main(void)

{
    int number, answer;
    answer = 51;

    printf("Enter a number between 0 and 100:\n");
    scanf("%d", &number);

    if ((number > 51) && (number <= 56) || (number < 51) && (number >= 46))
    {
            printf("Hot\n");
    }     
    else if ((number > 56) && (number <= 66) || (number < 46) && (number >= 36))
    {
            printf("Warm\n");
    }
    else if ((number > 66) && (number <= 100) || (number <36) && (number >= 0))
    {
            printf("Cold\n");
    }
    else if ((number > 100) || (number < 0))
    {
            printf("Error number has to be between 0 and 100 - re run\n");
    } 
    else (number = 51);
    {
            printf("Correct!\n");
    } 
    system ("pause");
    return 0;    
}

這個小片段:

else (number = 51);
{
    printf("Correct!\n");
}

實際上等效於:

else
    (number = 51);
//=======================
{
    printf("Correct!\n");
}

它的第一部分是else子句,如果激活該子句,它將number設置為51

第二部分與if語句部分完全斷開 ,並且是一個獨立的塊,無論如何執行。

如果必須將條件放在此處以提高可讀性(並且將是==而不是= ),則可以執行以下操作:

else // (number == 51)
{
    printf("Correct!\n");
}

順便說一句,您可以通過從特定內容開始並轉移到一般內容,從而使代碼更短,更易讀,例如(僅替換if語句):

if (number == 51)
    printf ("Correct!\n");
else if ((number >= 46) && (number <= 56))
    printf ("Hot\n");
else if ((number >= 36) && (number <= 66))
    printf ("Warm\n");
else if ((number >= 0) && (number <= 100))
    printf ("Cold\n");
else
    printf ("Error,  number has to be between 0 and 100 - re run\n");
}

您無需檢查“溫度”的兩個范圍(上下),因為已經檢查了內部范圍。

else (number = 51);
{
   printf("Correct!\n");
} 

可以重寫為

else 
{
   number = 51;
}
{
   printf("Correct!\n");
} 

因此,無論您的電話號碼是什么, printf("Correct!\\n"); 被執行。

它可以像

else
{
   printf("Correct!\n");
} 

從else語句中刪除條件。

int main(void)

{
    int number, answer;
    answer = 51;

printf("Enter a number between 0 and 100:\n");
scanf("%d", &number);

if ((number > 51) && (number <= 56) || (number < 51) && (number >= 46))
{
        printf("Hot\n");
}     
else if ((number > 56) && (number <= 66) || (number < 46) && (number >= 36))
{
        printf("Warm\n");
}
else if ((number > 66) && (number <= 100) || (number <36) && (number >= 0))
{
        printf("Cold\n");
}
else if ((number > 100) || (number < 0))
{
        printf("Error number has to be between 0 and 100 - re run\n");
} 
else
{
        printf("Correct!\n");
}
return 0;    

}

您的代碼說:如果所有if語句都不滿足,則為number分配51。 然后始終打印“正確!\\ n”。

在最后的else語句中,您應該使用else if(number == 51){...}或

else 
{
    ...
}

暫無
暫無

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

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