在C ++中遍历数组时遇到麻烦

时间:2018-10-04 20:40:21

标签: c++ arrays microsoft-visual-c++

我似乎在遍历数组错误,我已经设置好它来提示用户输入数字列表,并且我应该将其与用户设置的另一个数字进行比较。

#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!";
        }

2 个答案:

答案 0 :(得分:0)

您正在使用单个等号。这是将s设置为userArray[i],因此它始终为true。为了进行比较,请使用双等号,如下所示:
if (s == userArray[i]) {...}
另外,您的return语句在循环内(贷记@UnholySheep)。

答案 1 :(得分:0)

您正在与单个赋值运算符=进行比较,您应该使用等于运算符而不是==

for循环中的

if (s = userArray[i])是一个示例。

您也犯了同样的错误

if (chk = true)