求解,我这输出怎么无限循环啊🤔,缺了什么东西呢?怎么改啊?求指点🙏

img

img

img

你写的判断条件有问题,看样子是你还没有理解题意题目说输入的数据都是绝对值不超过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;
 }