【发布时间】:2022-01-11 19:49:58
【问题描述】:
int main()
{
float dizi[10], *ptr, ort, toplam = 0.0;
int i;
ptr = dizi;
for (i = 1; i <= 3; i++)
{
printf("input %d. value : ", i);
scanf("%f", &*ptr);
toplam += *ptr;
}
for (i = 4; i <= 10; i++)
{
*(ptr + i) = toplam / 3;
printf("%d. value is : %f\n", i, *(ptr + i));
}
}
过程如下:例如,我输入的前三个值是 2,3,4,它们的平均值“3”显示为数组的第 4 个元素。之后,它应该取数组的第 2、3、4 个值 '3'、'4'、'4' 的平均值,并将数字 3.66 保存为数组的第 5 个值。这个过程应该一直持续到数组的最后一个元素,第 10 个值。简而言之,每个元素必须计算为前三个元素值的平均值,并按顺序添加到数组中。我需要使用指针来解决这个问题。
【问题讨论】:
-
&*ptr只是ptr。而*(ptr+i)和ptr[i]一样更容易阅读... -
而 C 数组索引是基于 0 的,而不是 1。您将离开
dizi数组的末尾。 -
“我需要用指针来解决这个问题。”...那里有问题吗?有什么问题可以描述吗?
-
第一个循环中还有另一个主要错误。仔细想想它在做什么。
-
我明天要去参加考试,这是一个可能的问题。在问题中,要求使用指针进行解决。由于我认为在考试中会一样,所以我正在寻找带有指针的解决方案。