所以代碼真的很簡單,它只是一個main(),但是while回圈中的if/else陳述句有問題,我不知道它是什么,我認為它應該是這樣作業的,但是顯然不是。
代碼正在創建一個11 元素陣列,但陣列的第 0 個元素由用戶輸入。例如,我輸入 5,陣列中有從 5 到 15 的數字。然后程式會顯示陣列中的數字。然后你可以輸入任何數字,如果你的數字等于陣列中的任何數字,那么程式應該說:“是的!!!”。
問題是,程式總是說,只有當輸入數字不等于陣列中的任何數字時它才應該這樣做......
那么請有人解釋一下為什么 if/else 陳述句失敗了?
如果這改變了某些東西,我也在 Code::Blocks 中寫了這個......
編碼:
#include <iostream>
using namespace std;
int main(){
int numbers[11];
int input;
cout << "Type in a number: ";
cin >> input;
for (int i=0; i<11; i ){
numbers[i] = input i;
}
for (int i=0; i<11; i ){
cout << numbers[i] <<endl;
}
while (true){
cout<<endl;
cout << "Type in a number:" <<endl;
cin.sync();
cin >> input;
if (input <= numbers[11] && input >= numbers[0])
cout << "YEES!!!" << endl;
else{
cout << "Number is out of range!" <<endl;
cout << "Please try again!" <<endl;
}
}
return 0;
}
uj5u.com熱心網友回復:
索引從零開始,所以如果你創建一個大小為 N 的陣列,最后一個索引總是 N-1。在您的情況下,最后一個元素的索引是 10。
if (input <= numbers[10] && input >= numbers[0]) // accurate
uj5u.com熱心網友回復:
陣列中的最后一個元素應該是 10,而不是 11,因為你從零開始。嘗試做
if (input <= numbers[10] && input >= numbers[0])
uj5u.com熱心網友回復:
雖然其他答案清楚地處理了索引問題(陣列索引從011 元素陣列的最后一個索引開始,10但這里發生了一點 XY 問題。如果你需要判斷一個輸入的數字是否在 1 到 11 的范圍內,那么完全沒有必要使用陣列。您只需要檢查它是否小于或等于 11 且大于或等于 1。
if (input <= 11 && input >= 1) {
// ...
}
您的代碼實際上是在嘗試執行此操作,但將范圍的底部和范圍numbers[0]的頂部存盤在numbers[10]其中,而陣列的其余部分未使用。如果您愿意,可以使用兩個變數來存盤這些限制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/482606.html
上一篇:陣列公式整數
