我正在使用C ++开发一个用于练习目的的小应用程序,我实际上在不使用数组的情况下开发了这个算法,但是现在我想使用数组来实现它。该计划应接受四个等级2的15分练习(第一和第三值),两个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;
}
}
}
这里的问题是它不应该在控制台上打印错误并且不能继续,只有在满足条件时,如果我在条件的宽限期内输入值,它会打印出“错误”并停止
我并不是真的想找人来解决这个问题,我想知道我做错了什么而没有让别人为我解决,用正确的话来说,我正在寻找提示/提示。
答案 0 :(得分:0)
这一行
}else if(grades[2]||grades[3]){
cout<<"ERROR"<<endl;
break;
}
将导致您的错误在索引2或3处的元素不为零时随时显示。你没有初始化你的数组元素,所以当你的循环开始时,这些值很可能是非零的。为了确保它们不是,您可以在开始之前为所有元素指定零。我不确定您的代码尝试做什么,但是当用户在cin
和i = 2
处输入i = 3
以外的任何内容时,您的循环将因错误输出而中断(假设您的if
区块中的第一个if-else
条件不满意,但如果满足条件,您的循环也会退出。