-5

我正在使用 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 循环来打印数组 t 的值,则响应是正确的,否则(在 for 循环中)它是不正确的

谢谢你。

4

2 回答 2

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]);
}
于 2012-04-04T10:25:26.257 回答
0

所以我假设 t 是一个大小为 nb_of_subscribers*tags 的数组,而 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}。我是否正确,这就是您想要做的?

于 2012-04-04T10:36:47.833 回答