我想创建一个数字数组,由80到86,以0.5的增量分隔。我知道我可以通过编写一个数组来表示这一点
float Vector1[] = {80, 80.5, 81, 81.5, 82, 82.5, 83, 83.5, 84, 84.5, 85, 85.5, 86};
在我通常使用的Matlab中,这很简单
Vector1 = 80:0.5:86;
在这种特殊情况下,手动写入数组不是什么大问题,但是对于较大的数组,写出每个条目都不可行。在C中是否有类似的功能来创建任意范围和步长的线性间隔一维数组?如标题中所述,我想知道是否有不涉及使用循环的解决方案。
答案 0 :(得分:2)
您可以编写一段单独的代码来生成静态声明:
makevector.c:
#include <stdio.h>
int main()
{
float i;
int first = 1;
printf("float Vector1[] = { ");
for (i = 80; i <= 86; i += 0.5) {
if (first) {
first = 0;
} else {
printf(", ");
}
printf("%.1f", i);
}
printf(" };\n");
return 0;
}
然后运行它:
gcc -o makevector makevector.c
./makevector > vector.c
从技术上讲,您仍然有一个循环,但它是在代码创建之前完成的,因此您不需要在实际代码中循环。
答案 1 :(得分:0)
不,没有循环是不可能的。提供您要求的功能的所有语言都使用循环来实现。在C语言中,您只需要编写自己的循环。