0

我正在开发一个用于 C++ 实践目的的小应用程序,实际上我在不使用数组的情况下成功开发了这个算法,但现在我想使用数组来完成它。该计划应接受 15 分中的四个 2 分练习(第一和第三值)、20 分中的两个(第二和第四值)和 30 分中的一个。这是我的代码:

int main(int argc, char** argv){

    int grades[5];
    int i; 
    int sum=0;

    for(i=0; i<5; i++){
        cin >> grades[i];

        sum+=grades[i];

        if(grades[0]>15||grades[1]>20){

            cout<<"ERROR"<<endl;
            break;

        }else if(grades[2]||grades[3]){

            cout<<"ERROR"<<endl;
            break;

        }if(grades[4]>30){

            cout <<"ERROR"<<endl;
            break;
        }

    }   
}

这里的问题是它不应该在控制台上打印错误并阻止它继续,只有在满足条件的情况下,此时如果我即使在条件的宽限内输入值,它也会打印出“错误”并停止。

我并不是真的要找人来解决这个问题,我只是想知道我做错了什么,而不是让别人为我解决问题,用恰当的话来说,我正在寻找提示/提示。

4

1 回答 1

0

这条线在这里

     }else if(grades[2]||grades[3]){

            cout<<"ERROR"<<endl;
            break;

     }

将导致您在索引 2 或 3 处的元素不为零时显示错误。你没有初始化你的数组元素,所以当你的循环开始时这些值很可能是非零的。为确保它们不是,您可以在开始之前将零分配给所有元素。我不确定您的代码要做什么,但是当用户为cinat输入除零以外的任何内容时i = 2i = 3您的循环将因错误输出而中断(假设if您的if-else块中的第一个条件不满足,但如果满足该条件无论如何,您的循环也会退出)

于 2012-08-07T19:28:00.373 回答