c语言写到这步为什么运行不出来?

设计一个程序,从键盘输入小于30个学生成绩当输入为999时,输入完毕开始计算.功能有:按“1”计算其平均数,并输出所小于平均数的数;按“2”从键盘上输入一个成绩,判定该成绩是否在数组中,若在则输出所在序号;按“3”统计并显示优、良、中、及格及不及格人数;按“4”显示本班级的最高分及最低分

img

img

img

img

img

你代码逻辑不对 应该用while 循环输入,在循环中判断if(x==999)结束循环
参考下

#include<stdio.h>

void fun1(int a[], int n)
{
    int i;
    float avg, sum=0;
    for(i=0;i<n;i++)
        sum += a[i];
    avg = sum / n;
    printf("平均数:%.2f\n",avg);
    printf("小于平均数的数:");
    for(i=0;i<n;i++)
        if (a[i]<avg)
            printf(" %d", a[i]);
}

void fun2(int a[], int n)
{
    int i,x;
    printf("输入一个成绩:");
    scanf("%d", &x);
    for(i=0;i<n;i++)
        if (a[i]==x)
            break;
    if (i<n)
        printf("%d所在序号:%d\n", x, i);
    else
        printf("数组中没有%d\n", x);
}

void fun3(int a[], int n)
{
    int i;
    int sa = 0,sb = 0,sc = 0,sd = 0,se = 0;
    for(i=0;i<n;i++){
        if (a[i]>=90) {
            sa++;
        } else if (a[i]>=80) {
            sb++;
        } else if (a[i]>=70) {
            sc++;
        } else if (a[i]>=60) {
            sd++;
        } else{
            se++;
        }
    }
    printf("优秀人数:%d, 良好人数:%d, 中等人数:%d, 及格人数:%d, 不及格人数:%d",sa,sb,sc,sd,se);
}

void fun4(int a[], int n)
{
    int i,max=0,min=0;
    for(i = 1; i < n; i++)
    {
        if (a[i]>a[max])
            max = i;
        if (a[i]<a[min])
            min = i;
    }
    printf("最高分:%d, 最低分:%d",a[max],a[min]);
}

int main()
{
    int x,m,i,count=0;
    int a[30];
    while (count<30)
    {
        scanf("%d", &x);
        if (x==999)
            break;
        a[count++] = x;
    }
    printf("按“1”计算其平均数,并输出所小于平均数的数;\n");
    printf("按“2”从键盘上输入一个成绩,判定该成绩是否在数组中,若在则输出所在序号;\n");
    printf("按“3”统计并显示优、良、中、及格及不及格人数;\n");
    printf("按“4”显示本班级的最高分及最低分:\n");
    scanf("%d", &m);
    if (m==1)
    {
        fun1(a,count);
    }
    else if (m==2)
    {
        fun2(a,count);
    }
    else if (m==3)
    {
        fun3(a,count);
    }
    else if (m==4)
    {
        fun4(a,count);
    }
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img