跟书上一模一样了,为什么WA掉

qq_39261501 2018-03-19 09:26:15
题目是最简单的查找元素
找x在已知数组中的下标(从0开始,没有输出-1


#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;
}
}
if(!flag)
cout<<"-1"<<endl;
return 0;
}
...全文
297 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lylvv777 2018-03-20
  • 打赏
  • 举报
回复

#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
自信男孩 2018-03-19
  • 打赏
  • 举报
回复
//#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这句就不再执行了。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧