获得循环工作

时间:2013-11-16 23:54:24

标签: c loops pointers printf

我在网站上找到了这个C示例,并试图让它工作:

void simple(int n, float *a, float *b)
{
    int i;
    for (i=1; i<n; i++)
    {
        b[i] = (a[i] + a[i-1]) / 2.0;
    }
}

这是我为测试目的而添加的内容:

int main()
{
    float *p1, *p2, a, b;
    a = 5;
    b = 10;

    p1 = &a;
    p2 = &b;

    simple(5, p1, p2);

    return 0;
}

可以吗?

但我怎么能看到这个例子产生了什么?我可以在循环中添加printf吗?如果是这样,需要什么样的参数?

2 个答案:

答案 0 :(得分:1)

不,你的例子不行,你在一个只包含1的对象中使用了5个元素。使用像

这样的东西
float a[5] = { 2, 3 ,4, 5, 6 };

获取要操作的真实数组。

答案 1 :(得分:0)

试试这个:

void simple(int n, float *a, float *b)
{
    int i;

    for (i = 1; i < n; i++)
    {
        b[i] = (a[i] + a[i - 1]) / 2.0;

        printf("For i = %d:\n", i);
        printf("\ta[i] = %.2f\n", a[i]);
        printf("\tb[i] = %.2f\n\n", b[i]);
    }
}