m0_68362664 2022-03-19 16:11 采纳率: 68.2%
浏览 19
已采纳

程序有错,local function definitions are illegal和unexpected end of file found,怎么改

#include <stdio.h>
#include <stdlib.h>
#define SIZE 30  //成绩数组总长度
#define SEGMENTSIZE 11  //分数段总共有0-10,总计11个段
#define FAILURE -1  //返回失败结果
#define SUCCESS 1   //返回成功结果
#define ASCEND 1    //升序
#define DECEND -1   //降序

void main()
{
    //注:数组中有25个学生分数,其中最一个-1表示该元素之前的数组元素值为有效分数。
    int score[SIZE] = { 78,65,23,34,56,87,90,100,45,88,54,95,63,66,89,54,64,77,63,56,0,86,97,94,30,-1 };//给score[1]到score[25]赋初值。
    int i;
    int scoreSegment[SEGMENTSIZE] = { 0 };//此数组用于存放统计各分数段的人数,分数段为0-10
    int stuNumber, maxScore, minScore, searchArrayPosition;
    int searchScore, appendScoreNum, insertScoreNum, result, arrayPossition;
    int order;//排序方向
    float averageScore, medianScore;
    enum Status { GAMEOVER, CONTINUE };
    int choiceNum;
    enum Status gameStatus;

    do
    {

        gameStatus = CONTINUE;
        printf("\n\t\t学  生  成  绩  管  理  系  统  1.3 \n\t\t\tDesigned by HuangX\n");
        printf("\n\t1.统计学生数\t\t\t2.统计分数段人数\n\n");
        printf("\t3.统计最高分\t\t\t4.统计最低分\n\n");
        printf("\t5.统计平均分\t\t\t6.统计中值\n\n");

        scanf("%d", &choiceNum);
        fflush(stdin);//清除键盘缓冲区的数,否则当输入字符时会出现死循环
    
        switch (choiceNum)
        {
        case 0:
            gameStatus = GAMEOVER;
            break;
        case 1:
            int countStuNum(int array[], int length)
            {
            int i, stuNumber = 0;
            for (i = 0; i<length; i++)
            if (array[i] != -1) stuNumber++; //因为数组的结尾是-1,统计非-1的个数
            else break;
            return stuNumber;

            } //countStuNum(int array[],int length)
        
        case 2:
        void countScoreSegment(int array[], int Len, int segment[], int segmentLen)
        {

    //柱状显示各分类段的人数
        printf("\n\t2. 统计显示各分类段的人数\n");
        break;

        }//end countScoreSegment(int array[],int len)
        case 3:
        int countMaxScore(int array[], int len)
        {
        int max = 100;

        return max;
        break;

        }  //countMaxScore(int array[],int len)
        case 4:
        int countMinScore(int array[], int len)
        {
        int min = 0;

        return min;
        break;

        }//end countMinScore(int array[],int len)
        case 5:
        float countAverageScore(int array[], int len)
        {
        int i, sum = 0;

        return (float)sum / len;
        break;

        }//end countAverageScore
    
    }
}

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-03-19 16:44
    关注

    你先把这些case里的函数放到main函数外面吧,完全是乱套的啊。case等于啥也没干,就在里面定义个函数???

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

报告相同问题?

问题事件

  • 已采纳回答 4月7日
  • 创建了问题 3月19日

悬赏问题

  • ¥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系统搭建请教(跨境电商用途)