你写的判断条件有问题,看样子是你还没有理解题意题目说输入的数据都是绝对值不超过1000的整数,这个是前提不应该作为while的判断条件,
int main()
{
int c = 0;
int a = 0;
while(1)
{
if(c == 250)
{
printf("%d",a);
break;
}
else
a++;
scanf("%d",&c);
}
return 0;
}
在输入数据时,电脑会先将你输入的数据存到缓冲区内,然后scanf会从中一个个读取,所以只要while循环一直循环scanf就可以将缓冲区的数据读取完毕,所以要想跳出循环,就必须在循环里把结束条件写好,
而你这个一直输出4,就是因为你输入的数据都是满足绝对值小于1000的,所以循环条件一直满足,而循环内部没有循环结束条件,所以你就一直会看到4,由于这道题只需要知道第一个“250”出现的位置,对于后面的数据不是很关心,所以就可以简单地用一个循环,找到第一个“250”的位置
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> v;
int i;
while(cin>>i)
{
v.push_back(i);
if(getchar()=='\n') break;
}
vector<int>::iterator it=find(v.begin(),v.end(),250);
int ans=it-v.begin();
cout<<ans+1;
return 0;
}