青青草原之王 2022-06-03 21:37 采纳率: 100%
浏览 57
已结题

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

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

img

img

img

img

img

  • 写回答

1条回答 默认 最新

  • 天际的海浪 2022-06-03 21:47
    关注

    你代码逻辑不对 应该用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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月11日
  • 已采纳回答 6月3日
  • 创建了问题 6月3日

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?