我似乎在遍历数组错误,我已经设置好它来提示用户输入数字列表,并且我应该将其与用户设置的另一个数字进行比较。
#include <iostream>
using namespace std;
bool chk = true;
int main() {
/*
Write a program that asks the user to type 10 integers of an array and an integer s.
Then search the value s from the array and display the value of s if it is found in
the array otherwise print sorry not found..
*/
int userArray[10], i, greater = 0;
int s;
cout << "Enter a check number: \n";
cin >> s;
if (chk = true) {
//prompt for array list
for (i = 0; i < 9; i++) {
if (i == 0) {
cout << "Enter ten numbers: " << "\n";
cin >> userArray[i];
}
else {
cin >> userArray[i];
}
chk = false;
}
//loop through the array
for (int i = 0; i <= 10; i++) {
if (s = userArray[i]) {
//for testing
cout << userArray[i];
//cout << s;
}
else {
cout << "No match found!";
}
//I was just using this to pause the console and let me inspect result
cin >> greater;
return 0;
}
}
}
我假设问题出在以下代码。我的想法是我设置s = 2输入一个数字列表,然后与s进行比较,如果不存在匹配项则打印s,否则我打印没有找到匹配项。当我输入一个我知道与s匹配的数字时,它似乎会打印数组中的第一个数字,但是我认为,因为我在for循环中一个接一个地循环浏览数字,所以到达正确数字时应该显示该数字,而不是它停止了。预先感谢
//loop through the array
for (int i = 0; i <= 10; i++) {
if (s = userArray[i]) {
//for testing
cout << userArray[i];
//cout << s;
}
else {
cout << "No match found!";
}
答案 0 :(得分:0)
您正在使用单个等号。这是将s
设置为userArray[i]
,因此它始终为true。为了进行比较,请使用双等号,如下所示:
if (s == userArray[i]) {...}
另外,您的return
语句在循环内(贷记@UnholySheep)。
答案 1 :(得分:0)
您正在与单个赋值运算符=
进行比较,您应该使用等于运算符而不是==
if (s = userArray[i])
是一个示例。
您也犯了同样的错误
if (chk = true)