输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。
输入样例:
888 666 123 -233 250 13 250 -222
输出样例:
5
#include<stdio.h>
int main()
{
int x,n=0,i=0,m=0;
while((scanf("%d",&x))!='\n')
{ i++;
if(x==250)
{
n=i;
m++;
if(m==1)
{
printf("%d",n);
break;
}
}
}
}
为什么有了break后还可以输入数字,比如输入888 666 123 -233 250 13 250 -222
在第一个250不就跳出循环了吗
是这样没错,程序也没问题
很明显你这个代码是错误的,你也误解了你的代码的意思。
while(scanf("%d" , &x) != '\n') {}
这一行代码,只会一直输人,因为scanf();这个函数的返回值永远不会是‘\n’ 所以,如果你不加break 的话,这个循环是永远不会停下来的.
这也就是说,你的!= ‘\n’ 其实根本就没有用。你跳出while循环其实就是你的break
正确的代码应该是
while(scanf("%d" , &x) != -1) {}
// while(scanf("%d" , &x) != EOF){}
这里的EOF其实就是-1
参考
[](https://blog.csdn.net/qq_46009744/article/details/104254035?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168301751016800186537247%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168301751016800186537247&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-104254035-null-null.142^v86^insert_down1,239^v2^insert_chatgpt&utm_term=%E5%A4%9A%E7%BB%84%E8%BE%93%E5%85%A5&spm=1018.2226.3001.4187)
[](https://blog.csdn.net/yishengchizha/article/details/79687885?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168301839416800215018470%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168301839416800215018470&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-79687885-null-null.142^v86^insert_down1,239^v2^insert_chatgpt&utm_term=scanf%28%29%E7%9A%84%E8%BF%94%E5%9B%9E%E5%80%BC&spm=1018.2226.3001.4187)