C语言 控制结构 数值统计

来源:百度知道 编辑:UC知道 时间:2024/05/31 13:30:06
统计给定的n个数中,负数、零和正数的个数。
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数.

输入样例

6 0 1 2 3 -1 0
5 1 2 3 4 0.5
0

输出样例

1 2 3
0 0 5
需要的是简短精炼的程序。。。。。。

#include <stdio.h>
int main()
{
int n,i,d=0,b=0,c=0;
double a[100];
while(scanf("%d",&n)&&n!=0)
{for(i=0;i<n;i++)
{scanf("%lf",&a[i]);
if(a[i]<0)
d++;
if(a[i]==0)
b++;
if (a[i]>0)
c++;
}
printf("%d %d %d\n",d,b,c);
d=b=c=0;
}
return 0;
}

这个想了好久,不过还是有点牵强。因为下面的程序要先输入数据的组数才行。楼主参考一下吧。程序如下:
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
int m,n;
printf("输入统计数据的行数: ");
scanf("%d",&m);
int **ip=new int*[m];
int sum[3]={0};
printf("按规则输入数据:\n");
for (int i=0;i<m;i++)
{
scanf("%d",&n);
ip[i]=new int[n+1];
ip[i][0]=n;
for (int j=1;j<=n;j++)
{
scanf("%d",&ip[i][j]);
}
}
printf("统计如下:\n");
printf(" 负数 零