青青草原之王 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 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)