OJ地址:https://vjudge.net/problem/HDU-2008
统计给定的n个数中,负数、零和正数的个数。
Input
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
Output
对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
Sample Input
6 0 1 2 3 -1 0
5 1 2 3 4 0.5
0
Sample Output
1 2 3
0 0 5
思路:
这是一道简单的数学题,但是在输入最好使用cin,cin不需要规定输入的类型,所以,可以输入整数和小数,也可以使用scanf,把输入的值规定为double类型即可。
程序代码:
程序一:
using namespace std;
int main(){
int n;
while(cin>>n&&n){
int a=0,b=0,c=0;
double x;
for(int i=0;i<n;i++){
cin>>x;
if(x<0)
a++;
else if(x==0)
b++;
else
c++;
}
cout<<a<<" "<<b<<" "<<c<<endl;
}
return 0;
}
程序二:
int main(){
int n;
while(scanf("%d",&n)!=EOF&&n){
int a=0,b=0,c=0;
double x;
for(int i=0;i<n;i++){
scanf("%lf",&x);
if(x<0)
a++;
else if(x==0)
b++;
else
c++;
}
printf("%d %d %d\n",a,b,c);
}
return 0;
}
运行结果: