33,311
社区成员
发帖
与我相关
我的任务
分享
#include<cstdio>
#include<iostream>
using namespace std;
int school[100005] = { 0 };
int main()
{
int n;
cin >> n;
bool flag = false;
int a[205];
for (int i = 0; i<n; i++)
cin >> a[i];
int x;
cin >> x;
for (int i = 0; i<n; i++)
{
if (a[i] == x)
{
cout << i << endl;
//break;
flag = true;
break;
}
}
if (!flag)
cout << "-1" << endl;
return 0;
}
break语句执行后flag就没有变化依旧是false//#include<cstdio>
#include <iostream>
using namespace std;
//int school[100005]={0};
int main()
{
int n;
bool flag=false;
int a[205];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
int x;
cin>>x;
for(int i=0;i<n;i++)
{
if(a[i]==x)
{
cout<<i<<endl;
flag=true;
break;
}
}
if(!flag)
cout<<"-1"<<endl;
return 0;
}
参考一下吧
问题:代码有冗余,并且冗余的变量很占内存。school数组太大(这可能会导致内存不足,导致程序异常退出);
第二点,代码逻辑存在问题:
flag=true;
break;
这两行代码不能颠倒位置,因为若break在前,则flag = true这句就不再执行了。