在C中使用带有for循环的数组

时间:2012-04-04 10:21:20

标签: c arrays

我正在使用C,我有一个数组t[]

我写了一个for循环,但答案是错误的。

请帮助我抓住错误。我的代码是:

for(j = 0; j < tags; j++)
{
    for(k = j; k < nb_of_subscribers*tags; k = k+tags)
    {
        avr[j] = (float)(avr[j]+t[k]);
    }
    printf("avr[j]:%f", avr[j]);
}

实际上,t []的值在for循环中读取不正确,我不知道为什么。如果我只使用for循环来printf数组的值t响应是正确的,否则(在for循环中)它是不正确的

谢谢。

2 个答案:

答案 0 :(得分:1)

在开始迭代求和之前,您应该将avr[j]设置为0:

for(j = 0; j < tags; j++)
{
    avr[j] = 0; // <-----
    for(k = j; k < nb_of_subscribers*tags; k = k+tags)
    {
        avr[j] = (float)(avr[j]+t[k]);
    }
    printf("avr[j]:%f", avr[j]);
}

答案 1 :(得分:0)

所以我假设t是一个大小为nb_of_subscribers *标签的数组,而avr是一个大小标签数组。

如果我没弄错的话,你打算做的是:

for(int j = 0; j < tags; j++)
{
    for(int k = 0; k < nb_of_subscribers; k++)
    {
        avr[j] += (float)(t[j + k*tags]);
    }
    printf("avr[j]:%f", avr[j]);
}

也就是说,假设标签为2且nb_of_subscribers为3,数组为t [6] = {0,5,1,6,2,7},则数组avr [2]为{3, 18}。我是否正确,这是你想做的?