有什么问题吗?它显示了一个错误,帮助我,我是一个初学者。我可以在数组中使用双精度吗?
# include <stdio.h>
int main()
{
double a;
scanf("%lf",&a);
double s[a];
double b,c=0, d;
for(b=0;b<a;b++){
scanf("%lf",&s[b]);
}
for(b=0;b<a;b++){
c = c + s[b];
d=b+1;
printf("%lf\n",c/d);
}
return 0;
}
4条答案
按热度按时间f4t66c6m1#
使用此选项:
其余的代码都很好。
y0u0uwnf2#
虽然现代c语言支持可变长度数组,但数组的大小必须是正整数。
你所能做的是绕到最近的地方
size_t
:包括
<math.h>
访问ceil
以及fabs
.ecbunoof3#
如果不清楚,数组的长度不能是原来的两倍。这是未定义的行为。
这是因为double不是整数,而是可以是整数的有理数。理解这个问题的一个简单方法是使用一些浮点值,比如3.5。
长度为3.5的数组是什么?它是连续内存中某个大小的3个半插槽吗?有足够的空位容纳3个人吗?4? 3.5插槽可能是无用的和意外的,如果它不是一个分数插槽,它可能是不清楚的,可能是意外的,因此没有定义的行为。
虽然其他人提出了创建整数类型的解决方案,但不能创建双倍长度的数组。你可以创建一个双倍数组
但是你不能像这样创建一个双倍长度的数组
2j4z5cfb4#
不能使用浮点类型(
float
或者double
)指定数组大小或数组索引:6.7.6.2数组声明器
约束条件
1除了可选的类型限定符和关键字
static
,的[
以及]
可以限定一个表达式或*
. 如果它们限定一个表达式(指定数组的大小),则该表达式应为整数类型。如果表达式是常量表达式,则其值应大于零。元素类型不得为不完整或函数类型。可选的类型限定符和关键字static
应仅出现在具有数组类型的函数参数的声明中,然后仅出现在最外层的数组类型派生中。c 2011在线草案
6.5.2.1阵列下标
约束条件
1其中一个表达式的类型应为“指向完整对象的指针类型”,另一个表达式的类型应为整数类型,结果的类型应为“类型”。
同上。
所以呢
a
以及b
必须是积分型-我通常使用size_t
对于数组大小和索引变量: