求一串数的最值和均值,均值总是不对

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

```c
//找出若干个非零数中的最小值和平均值
#include<stdio.h>
int main()
{
    int i,a[100],t;
    float min,sum,ave;
    for(i=0;i<=99;i++)
    { 
        scanf("%d",&a[i]);
    }
    min=a[0];
    sum=a[0];
    t=1; 
    for(i=1;i<=99;i++)
    {
        
        if(a[i]==0) break;
        t=t+1;
        sum=sum+a[i];
        if (min>a[i])
            min=a[i];
        
    }
    ave=sum/t;
    printf("min=%.0f,ave=%.0f\n",min,ave);
    return 0;
}


``

无论输入什么,均值的结果总是等于 最小值

刚总结了一下,假设只输入6个数,最后一位以零为结束的时候结果是对的;要是以逗号间隔输出或者不以零为结尾,平均值都会出错。

img

而题要求的是若干个数,所以我定义了一个较大的数组,但是不输入全的话不会运行,所以得让输入程序停止运行,测试过\n和\r都不起作用

img

最后一个输入的数改为0,测试发现没问题。

img


 

#include<stdio.h>
int main()
{
    int i,a[100],t;
    float min,sum,ave;
    for(i=0;i<=5;i++)
    { 
        scanf("%d",&a[i]);
    }
    for(i=0;i<6;i++){
        printf("%d ",a[i]);
    } 
    min=a[0];
    sum=a[0];
    t=1; 
    for(i=1;i<=99;i++)
    {
        
        if(a[i]==0) break;
        t=t+1;
        sum=sum+a[i];
        if (min>a[i])
            min=a[i];
        
    }
    ave=sum/t;
    printf("min=%.0f,ave=%.0f\n",min,ave);
    return 0;
}

if(a[i]==0) continue;

你打印的时候没有打印小数的原因把,四舍五入了。