是否有简洁的方法(无循环)在C中创建线性间隔的数组?

时间:2018-09-24 18:31:33

标签: c arrays

我想创建一个数字数组,由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中是否有类似的功能来创建任意范围和步长的线性间隔一维数组?如标题中所述,我想知道是否有不涉及使用循环的解决方案。

2 个答案:

答案 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语言中,您只需要编写自己的循环。