C++程序设计 后面搞不来了

设计一个程序,从键盘输入小于30个学生成绩,当输入为 999 时,输入完毕开始计算。功能有:按“1“计算其平均数,并输出所有小于平均数的数;按“2“从键盘上输入一个成绩,判定该成绩是否在数组中,若在则输出所在序号;按“3“统计并显示优、良、中、及格及不及格人数;按“4“显示本班级的最高分及最低分
#include<stdio.h>
int main()
{printf(" 请根据你需用的功能选择序号\n");
printf("1.计算平均数,并输出所有小于平均数的数\n") ;
printf("2.输入成绩,并判断成绩是否在数组中,若在则输出所在序号\n") ;
printf("3.统计并显示优、良、中、及格、及不及格的人数\n");
printf("4.显示本班级的最高分及最低分\n");
printf("请输入小于30个学生成绩,当输入为999时,输入完毕\n");
void action1(int);
void action2(int) ;
void action3(int);
void action4(int);
int p[30];
int i;
int a,b,c,d;
char m;
for(i=0;i<30;i++)
{scanf("%d",&p[i]);
if(p[i]==999)
printf("输入完毕\n");}
printf("请输入你想查询的序号\n");
m=getchar();
switch(m)
{
case '1':action1(a);break;
case '2':action2(b);break;
case '3':action3(c);break;
case '4':action4(d);break;
default:printf("请重新输入数字");
return 0;}
}
void actional()
{int p[30];
int i;
float aver;
int sum=0;
for(i=0;i<30;i++)
if(p[i]!=999)
sum=sum+p[i];
else break;
aver=sum/i;
printf("%5.2f\n",aver);
for(i=0;i<30;i++)
if(p[i]<aver)
printf("%d\n",&p[i]);
}
void actiona2()
{int p[30];
int m,n,i;
for(i=0;i<30;i++)
if(p[i]==999) break;
scanf("


#include <stdio.h>

void menu()
{
    printf(" 请根据你需用的功能选择序号\n");
    printf("1.计算平均数,并输出所有小于平均数的数\n");
    printf("2.输入成绩,并判断成绩是否在数组中,若在则输出所在序号\n");
    printf("3.统计并显示优、良、中、及格、及不及格的人数\n");
    printf("4.显示本班级的最高分及最低分\n");
    printf("5.退出\n");
}

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

void action2(int *a, int len)
{
    int t, i, ishav = 0;
    scanf("%d", &t);
    for (i = 0; i < len; i++)
    {
        if (a[i] == t)
        {
            printf("%d ", i);
            ishav = 1;
        }
    }
    if (ishav == 0)
        printf("不存在该成绩\n");
    printf("\n");
}

void action3(int *a, int len)
{
    int i;
    int y, l, z, j, bj;
    y = l = z = j = bj = 0;
    for (i = 0; i < len; i++)
    {
        if (a[i] >= 90)
            y++;
        else if (a[i] < 90 && a[i] >= 80)
            l++;
        else if (a[i] < 80 && a[i] >= 70)
            z++;
        else if (a[i] < 70 && a[i] >= 60)
            j++;
        else if (a[i] < 60)
            bj++;
    }
    printf("优:%d 良:%d 中:%d 及格:%d 不及格:%d\n", y, l, z, j, bj);
    printf("\n");
}
void action4(int *a, int len)
{
    int i, max, min;
    max = min = *a;
    for (i = 1; i < len; i++)
    {
        if (a[i] > max)
            max = a[i];
        if (a[i] < min)
            min = a[i];
    }
    printf("最高分:%d 最低分:%d\n", max, min);
    printf("\n");
}

int main()
{

    printf("请输入小于30个学生成绩,当输入为999时,输入完毕\n");
    int p[30], count = 0, t;
    for (count = 0; count < 30; count++)
    {
        scanf("%d", &t);
        if (t == 999)
        {
            printf("输入完毕\n");
            break;
        }
        p[count] = t;
    }

    do
    {
        menu();
        scanf("%d", &t);
        switch (t)
        {
        case 1:
            action1(p, count);
            break;
        case 2:
            action2(p, count);
            break;
        case 3:
            action3(p, count);
            break;
        case 4:
            action4(p, count);
            break;
        case 5:
            break;
        default:
            printf("请重新输入数字\n");
        }
    } while (t != 5);

    return 0;
}

参考代码:

#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