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

在C中使用带有for循环的数组,c,arrays,C,Arrays,我使用的是C,我有一个数组t[] 我为循环编写了一个,但答案是错误的 请帮我找出错误。我的代码是: 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]); } (j=0;j

我使用的是C,我有一个数组
t[]

我为循环编写了一个
,但答案是错误的

请帮我找出错误。我的代码是:

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]);
}
(j=0;j { 对于(k=j;k

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


谢谢。

在开始迭代求和之前,您应该将
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]);
}
(j=0;j {
avr[j]=0;//所以我假设t是一个大小为nb_的数组,其中nb_是订阅方*标记,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]);
}
for(int j=0;j

也就是说,假设标签是2,订阅服务器的nb_是3,数组t[6]={0,5,1,6,2,7},那么数组avr[2]将是{3,18}你的代码打算做什么?你给它什么输入,你期望看到什么结果,你实际看到什么?答案是42,所以任何其他答案都是错误的。t[k]:0.000000t[k]:0.000000t[k]:1.000000t[k]:0.200000 t[k]:0.333333……。结果是:avr[j]:-12516448这是错误的,我实际上想要的是t的值的总和,请你完全理解。确切地说,你打算做什么?avr[j]一开始包含什么值?实际上,t[]在for循环中读取错误,我不知道为什么。如果我仅使用for循环来打印数组t的值,则响应正确(在for循环中)它是incorrect@holy,在这段代码中没有任何内容会给您错误的值。您可以将
k
的值正好打印在此数组之前和数组内部,并比较结果吗?请注意,逐个打印
t
的值会给您提供按订阅方的数据订阅方,而在此循环中,您会得到按t标记的数据订阅方ag.t[k]:0.000000T[k]:0.000000T[k]:1.000000T[k]:0.200000T[k]:0.333333…….结果是:avr[j]:-12516448,这是错误的,我实际上想要你在开始时设置的tDid值之和,就像我说的那样?还有,
avr
的类型是什么?是的。avr的类型是类似于t的浮点型