我正在使用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循环中)它是不正确的
谢谢。
答案 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}。我是否正确,这是你想做的?