C语言错误
要求是这样的:2、统计一组数据中正数、负数和零的个数。问题描述从键盘输入一组整数(不超过20个),然后统计该组数中的正数、负数和零的个数并输出。输入数据包括两行:第一行为...
要求是这样的:
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) 展开
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) 展开
2014-06-18
展开全部
float a[]是个指针吧不能直接拿来用,
可以在printf("请输入你的%d个数:\n",i);之前把float a[] new出来
a=new float[i];
可以在printf("请输入你的%d个数:\n",i);之前把float a[] new出来
a=new float[i];
更多追问追答
追问
指针是前面带*的吧
追答
我没有运行你的程序,那个是指针数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
float a[] 没有指定数组长度,
更多追问追答
追问
变成a[q]也没用啊
追答
把你的错误提示贴出来
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-06-19
展开全部
你的错误有两处
没有指定数组a的大小,动态指定大小可以把数组a的定义移动到scanf函数之后。这里就是scanf("%d",&i);float a[i];
比较语句写成了赋值语句,比较应该是双等号'=='而不是'='。你这里每个都写成了赋值
还有,关于main函数的返回值类型最好写成int类型的而不是void类型,因为没有哪个C标准允许过void main()这种写法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-08-07
展开全部
你的float a[]没有大小,float a[40]={0};就可以了
else if(i=0)改成else if(i==0)
for(q=1;q<i;q++)改成for(q=0;q<i;q++)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询