#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int body_height, chair_height, numb_of_apple,height_all,numb_get=0;
int numb_flag,a[1000];//
scanf("%d %d %d",&body_height, &chair_height, &numb_of_apple);//b[i]=buf;
//while(cin>>b[i++],cin.get()!='\n');
/*do
{
cin>>a[i++];
}while(cin.get()!= '\n');*/
numb_flag=0;
do
{
cin>>a[numb_flag++];
}while(numb_flag<numb_of_apple);
numb_flag=0;
height_all=body_height+chair_height;
while(numb_flag<numb_of_apple)
{
if(a[numb_flag++]<=height_all) numb_get++;
}
cout<<numb_get<<endl;
return 0;
}
题目很简单,但是当时由于看错题目,结果花了很长时间。
题目中已经给了苹果个数,所以你就循环n次读键盘输入数据就行。我看是以为不知道n,所以就在想以回车结束参数的输入。不过最后也是找出了办法。有两种:
第一种:
while(cin>>b[i++],cin.get()!='\n');
第二种:
do
{
cin>>a[i++];
}while(cin.get()!= '\n');
显然第一种比较简洁,网上搜到的。但是不容易懂。第二种是我分析后写的,就容易懂多了。其实很简单,主要是cin不能读取字符,所以回车没用。而cin.get()在这专门是用来读取字符的。
关于具体的cin,cin.get等函数的区别,可以看上篇转载的博文。