题目描述
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。
输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。
输出格式:
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。
输入样例:
888 666 123 -233 250 13 250 -222
输出样例:
5
代码
#include<iostream>
using namespace std;
int main(){
int a[10000],s;
for(int i=0;i<10000;i++){
cin>>a[i];
if(cin.get() =='\n')
break;
}
for(int i=0;i<sizeof(a)/sizeof(int);i++){
if(a[i]==250){
s=i+1;
break;
}
}
cout<<s;
}
这是天梯赛的一道真题,应该是最简单的一个题了吧,刚一看我也感觉挺简单的,但一做发现也并没有那么简单,首先遇到的第一个问题就是怎么判断一行数据是否输入完毕。于是查了一下用的是cin.get()来判断输入的字符是否是回车。本来我用的是while语句
while(scanf("%d",&a[i])!=EOF)
不知道哪里出了问题,我记着之前C语言应该就是这样判断的,但不知道为什么在这里就不行。
本来我想的是在输入的同时判断那个数值等于250然后把i赋值给新的变量,但发现并不只是一个250,所以行不通,只能在用一个for循环来判断了,不过感觉有点复杂。
这是大佬的代码
原文链接:https://blog.csdn.net/qq_41376345/article/details/85177310
#include<stdio.h>
int main()
{
int a,i;
i=0;
while(1)//循环为真的的条件
{
scanf("%d",&a);
if(a==250) break;
i++;
}
printf("%d\n",i+1);//i+1循环开始从0开始计数
return 0;
}
利用while语句,当a==250的时候,i不在加一,于是最终结果就是i+1.