簡體   English   中英

為什么for循環中的if語句不能正常工作?

[英]Why aren't my if statements inside the for loops working properly?

我正在嘗試進行w3resource.com練習,並且for循環中的if語句沒有得到遵守(即使條件不正確,if語句中的代碼也在運行)。 請幫我

我已經嘗試用while循環替換for循環並且問題仍然存在。 我試圖看看我的if語句有什么問題,但我找不到任何東西。

#include <iostream>
#include <algorithm>
#include <iterator>

void findAndPrintThe3LargestElements(int array[], int arraySize)
{
    int largestNumbers[] = { array[0], array[0], array[0] };
    for (int nextIndexNumber = 1; nextIndexNumber < arraySize; ++nextIndexNumber)
    {
        if (array[nextIndexNumber] > largestNumbers[0])
            largestNumbers[0] = array[nextIndexNumber];
    }


    for (int nextIndexNumber = 1; nextIndexNumber < arraySize; ++nextIndexNumber)
    {
        if (array[nextIndexNumber] > largestNumbers[1] && array[nextIndexNumber] != largestNumbers[0]);
        {
            largestNumbers[1] = array[nextIndexNumber];
        }
    }

    for (int nextIndexNumber = 1; nextIndexNumber < arraySize; ++nextIndexNumber)
    {
        if (array[nextIndexNumber] > largestNumbers[2] && array[nextIndexNumber] != largestNumbers[0] &&
            array[nextIndexNumber] != largestNumbers[1]);
        {
            largestNumbers[2] = array[nextIndexNumber];
        }
    }

    std::cout << "The three largest numbers in the array are: " << largestNumbers[0] << ", " << largestNumbers[1]
        << ", " << largestNumbers[2] << ".";
}

int main()
{
    int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int arraySize = std::size(array);
    findAndPrintThe3LargestElements(array, arraySize);
    return 0;
}

程序運行不正常,輸出錯誤的數字。

在第二個和第三個循環中,你在if后面加上分號:

if (<condidion>);
{
    <your code>
}

所以條件有空塊,並且始終執行帶代碼的塊。 它更像這樣:

if (<condition>)
    ;    // no operation here

{        // always executed
    <your code>
}

暫無
暫無

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

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