要求是这样的:
2、统计一组数据中正数、负数和零的个数。
问题描述
从键盘输入一组整数(不超过20个),然后统计该组数中的正数、负数和零的个数并输出。
输入数据包括两行:第一行为需要输入的数据个数,第二行为一组数据(用空格分隔)
输出数据只有一行:三个整数(分别是正数个数 负数个数 零的个数,用空格分隔)。
输入输出举例:
输入:
6
8 -6 5 0 1 -2
输出:
3 2 1
然后我是这样写的:
#include<stdio.h>
void main()
{
int i,j=0,k=0,g=0,q;
float a[];
printf("想要多少个数啊\n");
scanf("%d",&i);
if(i>20||i<0)
{
printf("最多20个正数\n");
}
else if(i=0)
{
printf("你在逗我\n");
}
else
{
printf("请输入你的%d个数:\n",i);
for(q=1;q<i;q++){
scanf("%f",&a[q]);
if(a[q]<0){
j+=1;
}
else if(a[q]=0){
k+=1;
}
else if(a[q]>0||(int)a[q]=a[q])
{
g+=1;
}
}
}
printf("正数有%d个\n",g);
printf("零有%d个\n",k);
printf("负数有%d个\n",j);
}
为什么说我flaot a[]是错误的?
D:\Microsoft Visual Studio\123.cpp(5) : error C2057: expected constant expression
D:\Microsoft Visual Studio\123.cpp(5) : error C2466: cannot allocate an array of constant size 0
D:\Microsoft Visual Studio\123.cpp(5) : error C2133: 'a' : unknown size
执行 cl.exe 时出错.
123.exe - 1 error(s), 0 warning(s)
C语言里的数组是必须要在编译时知道元素个数的。
float a[]没有指定元素个数,是错的。
float a[10]; //必须指定一个值表示元素个数