为什么我的条件代码在我的do-while循环中的条件语句不正确时执行?

时间:2017-11-20 00:13:39

标签: c++

#include<iostream>
#include<string>
using namespace std;

int main()
{
const int SIZE=7;
string tuition[SIZE];
 tuition[0]="Student ID";
 tuition[1]="total financial aid recieved";
 tuition[2]="amount paid for tuition";
 tuition[3]="amount paid for fees";
 tuition[4]="amount paid for books";
 tuition[5]="amount paid for housing";
 tuition[6]="amount paid for meal plan";
int costs[SIZE];


for(int index =0;index < SIZE;index++)
{
    cout<<"Please enter your "<<tuition[index]<<endl;
    cin>>costs[index];
    do{
        return 0;
    }while(costs[0] == 0);
    do{
        cout<<"Please re-enter the correct data.\n";
        cin>>costs[1];
    }while(costs[1] < 0);

}

return 0;

}

运行代码时即使条件语句为false,它也会执行条件代码。我很困惑为什么会这样。

3 个答案:

答案 0 :(得分:2)

do-while将执行一次或多次。代码在检查条件之前运行。

答案 1 :(得分:0)

因为在do-while循环中,代码将至少执行一次条件体。只使用一个while循环,这将解决您的问题。

答案 2 :(得分:-1)

嗯,这很简单,while while循环可以做到这一点:

Do While(在第一次运行代码后检查条件是否为真)。

如果你希望代码在条件为假时不运行,你应该只使用while循环(没有do部分)

因此,如果您想要完全执行此操作,那么代码应如何显示:

for(int index =0;index < SIZE;index++)
{
cout<<"Please enter your            "<<tuition[index]<<endl;
cin>>costs[index];
While(costs[0]==0){
    return 0;
}
While(costs[1] < 0){
    cout<<"Please re-enter the correct        data.\n";
    cin>>costs[1];
  }

return 0;

}

现在为什么会这样?

如果你理解了2种不同的情况,那就很容易了。

我们有:

  1. 虽然
  2. 一边做
  3. **首先检查条件是否为真。

    首先运行代码,然后检查是否为true(它将始终至少运行一次代码)。**

    这就是为什么你的代码总是运行,因为那就是为什么会这样做。

    如tas所示:

    如果在这种情况下使用会好得多,为什么?那么在这种情况下你已经使用for循环了,所以如果用if和else if语句改变while,你将得到相同的结果。

    在这里,您可以学习如何使用if语句:

    https://www.programiz.com/cpp-programming/if-else

    额外的,在这里你可以找到如何使用while:

    https://www.tutorialspoint.com/cplusplus/cpp_while_loop.htm