用指针取数组中3个数的平均值
Taking the average of the 3 numbers in the array with the pointer
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 个值。简而言之,每个元素必须计算为前三个元素值的平均值,并按顺序添加到数组中。我需要用指针来解决这个问题。
您的代码中存在多个问题:
- 您没有将第二个和第三个数字读入数组的第二个和第三个条目。
- 您不会在移动和计算下一个条目时更新总和。
这是修改后的版本:
#include <stdio.h>
int main() {
float dizi[10], *ptr = dizi, sum = 0.0;
int i;
for (i = 1; i <= 3; i++) {
printf("input %d. value: ", i);
if (scanf("%f", ptr) != 1)
return 1;
sum += *ptr;
ptr++;
}
for (i = 4; i <= 10; i++) {
*ptr = sum / 3; // store the average
printf("%d. value is: %g\n", i, *ptr);
sum -= ptr[-3]; // subtract the first value
sum += *ptr; // add the next value
ptr++;
}
return 0;
}
样本运行:
input 1. value: 2
input 2. value: 3
input 3. value: 4
4. value is: 3
5. value is: 3.33333
6. value is: 3.44444
7. value is: 3.25926
8. value is: 3.34568
9. value is: 3.34979
10. value is: 3.31824
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 个值。简而言之,每个元素必须计算为前三个元素值的平均值,并按顺序添加到数组中。我需要用指针来解决这个问题。
您的代码中存在多个问题:
- 您没有将第二个和第三个数字读入数组的第二个和第三个条目。
- 您不会在移动和计算下一个条目时更新总和。
这是修改后的版本:
#include <stdio.h>
int main() {
float dizi[10], *ptr = dizi, sum = 0.0;
int i;
for (i = 1; i <= 3; i++) {
printf("input %d. value: ", i);
if (scanf("%f", ptr) != 1)
return 1;
sum += *ptr;
ptr++;
}
for (i = 4; i <= 10; i++) {
*ptr = sum / 3; // store the average
printf("%d. value is: %g\n", i, *ptr);
sum -= ptr[-3]; // subtract the first value
sum += *ptr; // add the next value
ptr++;
}
return 0;
}
样本运行:
input 1. value: 2
input 2. value: 3
input 3. value: 4
4. value is: 3
5. value is: 3.33333
6. value is: 3.44444
7. value is: 3.25926
8. value is: 3.34568
9. value is: 3.34979
10. value is: 3.31824