我为学校写了一个程序,它有一个硬编码的元素数组,用户必须在数组中搜索一个元素。然后输出将通过输出0或1(1为是0为否)告诉用户数字是否在数组中。但是,我不断得到的输出是集合中的每个元素,而不仅仅是我要搜索的数字。我错过了什么?
#include <iostream>
#include <cstring>
using namespace std;
int main(void)
{
int l[10] = {2,4,6,8,10,12,14,16,18,20};
int i;
int it;
cout<<"This program searches a list to find an item within that list"<<endl;
cout<<"1 is true ; 0 is false"<<endl;
cout<<"Enter a number between 1 and 20 to be searched: ";
cin>>it;
for (i=0;i<10;i++)
{
if (it==l[i])
cout<<"1"<<endl;
else
cout<<"0"<<endl;
}
return 0;
}
答案 0 :(得分:2)
您错过了循环背后的基本理念。在您的代码中,您循环遍历元素并检查每个元素,并在每次测试后输出0
或1
。如果要打印输出一次,请将其存储在bool值中,并在>>循环结束后打印。
当您在其中找到元素时,您也可以从循环中break
,并且仅在未找到元素时输出0
(所以当i==arraySize
时)。
答案 1 :(得分:1)
因此,在这种情况下,问题是您正在访问数组中的每个元素并打印它们是否是您要搜索的内容。相反,您需要确定它们中的每一个是否都是您要搜索的内容,然后打印。例如:
for (i=0;i<10;i++){
if (it==l[i]) {
cout<<"1"<<endl;
return 0;
}
}
cout<<"0"<<endl;
return 0;
答案 2 :(得分:1)
添加到Pawels回答:
bool found = false;
//for loop add this
if(it == l[i])
found = true;
//outside loop
if(found) //found it!
else //didnt find it