请大家帮我看看我的代码到底错在哪了

#include<stdio.h>
int main()
{
int i,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10;
float a[10],s=0,aver,t;
for(i=0;i<10;i++)
{
printf("请输入学生分数:\n");
scanf ("%f",&a[i]);
s+=a[i]; }
aver=s/10;
for(i=0;i<10;i++)
{
if(a[i]>aver)
{
t++;
}
}
printf("平均分为:%f 高于平均分的人数:%f\n",aver,t);
for(i=0;i<10;i++)
{
int p=a[i]/10;
switch(p)
{
case 0:b0++;break;
case 1:b1++;break;
case 2:b2++;break;
case 3:b3++;break;
case 4:b4++;break;
case 5:b5++;break;
case 6:b6++;break;
case 7:b7++;break;
case 8:b8++;break;
case 9:b9++;break;
case 10:b10++;break;
}
}
printf("分数0-9数人数:%d\n",b0);
printf("分数10-19的人数:%d\n",b1);
printf("分数20-29的人数:%d\n",b2);
printf("分数30-39的人数:%d\n",b3);
printf("分数40-49的人数:%d\n",b4);
printf("分数50-59的人数:%d\n",b5);
printf("分数60-69的人数:%d\n",b6);
printf("分数70-79的人数:%d\n",b7);
printf("分数80-89的人数:%d\n",b8);
printf("分数90-99的人数:%d\n",b9);
printf("分数100的人数:%d\n",b10);
return 0;
}

b0到b10都需要初始化为0
不然你++的基础值是个野值,结果自然不对了
另外大于平均分的人数t最好定义为整型。

你的b0到b10都没有赋初值
代码修改后如下

#include <stdio.h>
int main()
{
    int i, b[11] = {0};
    float a[10], s = 0, aver, t;
    for (i = 0; i < 10; i++)
    {
        printf("请输入学生分数:\n");
        scanf("%f", &a[i]);
        s += a[i];
    }
    aver = s / 10;
    for (i = 0; i < 10; i++)
    {
        if (a[i] > aver)
        {
            t++;
        }
    }
    printf("平均分为:%f 高于平均分的人数:%f\n", aver, t);
    for (i = 0; i < 10; i++)
    {
        int p = a[i] / 10;
        b[p]++;
    }
    printf("分数0-9数人数:%d\n", b[0]);
    printf("分数10-19的人数:%d\n", b[1]);
    printf("分数20-29的人数:%d\n", b[2]);
    printf("分数30-39的人数:%d\n", b[3]);
    printf("分数40-49的人数:%d\n", b[4]);
    printf("分数50-59的人数:%d\n", b[5]);
    printf("分数60-69的人数:%d\n", b[6]);
    printf("分数70-79的人数:%d\n", b[7]);
    printf("分数80-89的人数:%d\n", b[8]);
    printf("分数90-99的人数:%d\n", b[9]);
    printf("分数100的人数:%d\n", b[10]);
    return 0;
}