我的最小部分没有显示真正的最小值

问题描述 投票:-1回答:1
#include<stdio.h>
int main(){
float a[100],sum=0.0,avg,havg[100],min,max;
int i;
for(i=0; i!=-1;i++){
    printf("Enter number : ");
    scanf("%f",&a[i]);
    max = a[0];
    min = a[0];
    sum+=a[i];
    avg= sum/(i+1);
    havg[i]=avg/2;
    printf("Loop %d Summation : %.0f ",i,sum);
    printf("Half of Avg. : %.2f \n",havg[i]);
    for(int j=0; j<i; j++){
       if (a[i]>max) {
           max = a[i];
       }
       if (a[i]<min) {
           min = a[i];
       }
    }
    if(a[i]>havg[i-1]&&i!=0){
       break;
    }
}
printf("---Data Complete---\n");
printf("Max: %.0f\n", max);
printf("Min: %.0f\n", min);

这里的输出是:

输入数字:24

循环0求和:24平均一半:12.00

输入数字:12

循环1总和:36平均一半:9.00

输入数字:-5

循环2总和:31平均一半:5.17

输入数字:9

循环3求和:40平均一半:5.00

---数据完整---

马克斯:24

敏:9

我已经在google上查找数组中的最小值和最大值。我想我搞砸了一些东西:

#include<stdio.h>
int main(){
float a[100],sum=0.0,avg,havg[100],min=0.0,max=0.0;
int i;
for(i=0; i!=-1;i++){
    printf("Enter number : ");
    scanf("%f",&a[i]);
    max = a[0];
    min = a[0];
    sum+=a[i];
    avg= sum/(i+1);
    havg[i]=avg/2;
    printf("Loop %d Summation : %.0f ",i+1,sum);
    printf("Half of Avg. : %.2f \n",havg[i]);
    if (a[i]>max){
      max = a[i];
        }
    if (a[i]<min){
      min = a[i];
        }
    if(a[i]>havg[i-1]&&i!=0){
       break;
    }
}
printf("---Data Complete---\n");
printf("Max: %.0f\n", max);
printf("Min: %.0f\n", min);
}

所以现在我用不同的数字进行测试(从负数开始)

Enter number : -10

Loop 1 Summation : -10 Half of Avg. : -5.00 

Enter number : -90 

Loop 2 Summation : -100 Half of Avg. : -25.00 

Enter number : 30

Loop 3 Summation : -70 Half of Avg. : -11.67 

---Data Complete---

Max: 30

Min: -10

这真令人困惑

c max average min
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.