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 個值。簡而言之,每個元素必須計算為前三個元素值的平均值,并按順序添加到陣列中。我需要使用指標來解決這個問題。
uj5u.com熱心網友回復:
您的代碼中有多個問題:
- 您不會將第二個和第三個數字讀入陣列的第二個和第三個條目中。
- 您在移動和計算下一個條目時不會更新總和。
這是修改后的版本:
#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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408635.html
標籤:
