yangzhixiaohuli 发表于 2023-11-2 18:32:31

求助一下

本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。

输入格式:
输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

输出格式:
在一行中输出X的位置,或者“Not Found”。

输入样例1:
5 7
3 5 7 1 9
输出样例1:
2
输入样例2:
5 7
3 5 8 1 9
输出样例2:
Not Found

这个题怎么做

我这样写哪里错了
#include<iostream>
using namespace std;
int m,n;
cin>>m>>n;
int arr;
int i;
for(i=0;i<m;i++)
{
    cin>>arr;
}
for(i=0;i<m;i++)
{
    if(n==arr)
    {
      cout<<i<<endl;
    }
    else
    {
      cout<<"Not Found"<<endl;
    }
}

isdkz 发表于 2023-11-2 18:32:44

你的代码有一些问题。首先,你不能在全局范围内使用 cin 和 cout ,它们应该在函数内使用。其次,你在循环中每次都输出结果,这是不正确的,应该在循环结束后判断是否找到了X并输出结果。下面是修改后的代码:

#include<iostream>
using namespace std;

int main() {
    int m, n;
    cin >> m >> n;
    int arr;
    int i;
    for (i = 0; i < m; i++) {
      cin >> arr[ i];
    }
    bool found = false;
    for (i = 0; i < m; i++) {
      if (n == arr[ i]) {
            cout << i << endl;
            found = true;
            break;
      }
    }
    if (!found) {
      cout << "Not Found" << endl;
    }
    return 0;
}


这段代码首先读取输入的N和X,并创建一个大小为N的整数数组。然后,它使用一个循环来逐个比较数组中的元素和X,如果找到了相等的元素,就输出位置并将 found 标记为 true ,然后跳出循环。循环结束后,如果 found 仍然为 false ,则输出"Not Found"。
页: [1]
查看完整版本: 求助一下