题目来源: ZZULIOJ-1083:数值统计
题目描述:
- 描述: 统计给定的n个数中,负数、零和正数的个数
- 输入: 输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
- 输出: 对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
- 示例:
示例1:
输入:6 0 1 2 3 -1 0
输出:1 2 3
说明:第一个数是整数6,表示需要统计的数值的个数为6
示例2:
输入:5 1 2 3 4 0.5
输出:0 0 5
示例3:
输入:0
输出:
说明:如果n=0,则表示输入结束,该行不做处理
思路:二分查找
具体实现:
#include<stdio.h>
int main()
{
double x;//定义实数x
int i,n,z,f,l;//定义循环变量i,每次循环次数n,正数z,负数f,零l
while(scanf("%d",&n),n!=0)
{
z=0,f=0,l=0;//初始化每次数值统计0
for(i=1;i<=n;i++)
{
scanf("%lf",&x);//键盘输入x的值
if(x>0)//如果x是正数
z++;
if(x<0)//如果x是负数
f++;
if(x==0)//如果x等于0
l++;
}
printf("%d %d %d\n",f,l,z); //输出负数、零、正数的数值
}
return 0;//程序正常结束
}