m0_68362664 2022-03-19 15:59 采纳率: 68.2%
浏览 30
已结题

我的程序错误怎么改,下面说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:12
    关注

    末尾缺个花括号
    case里函数提出去,放到main外面,在case里通过函数名调用。

    大概改了下

    #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 //降序
    
    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;
        printf("stuNumber:%d\n", stuNumber);
        return stuNumber;
    }
    
    void countScoreSegment(int array[], int Len, int segment[], int segmentLen)
    {
        //柱状显示各分类段的人数
        printf("\n\t2. 统计显示各分类段的人数\n");
    }
    
    int countMaxScore(int array[], int len)
    {
        int max = 0;
        for(int i = 0; i < len; i++)
        {
            if(array[i] >= max)max = array[i];
        }
    
        printf("MAX:%d\n", max);
    
        return max;
    }
    
    int countMinScore(int array[], int len)
    {
        int min = 101;
        for(int i = 0; i < len; i++)
        {
            if(array[i] <= min)min = array[i];
        }
    
        printf("MIN:%d\n", min);
    
        return min;
    }
    
    float countAverageScore(int array[], int len)
    {
        float ave, sum = 0;
        for(int i = 0; i < len; i++)
        {
            sum += array[i];
        }
        ave = sum / len;
        printf("AVE:%f\n", ave);
    
        return ave;
    }
    
    int main()
    {
        
    
        //注:数组中有25个学生分数,其中最一个-1表示该元素之前的数组元素值为有效分数。
        int score[SIZE] = { 78, 65, 23, 34, 56, 87, 90, 99, 45, 88, 54, 95, 63, 66, 89, 54, 64, 77, 63, 56, 5, 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;
     
        int len = 0;
        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;
                return 1;
            case 1:
                len = countStuNum( score,  SIZE);
                break;
            case 2:
                countScoreSegment(score,  len, scoreSegment, SEGMENTSIZE);
                break;
            case 3:
                countMaxScore( score,  len);
                break;
            case 4:
                countMinScore( score,  len);
                break;
            case 5:
                countAverageScore(score,  len);
                break;
            default:
                printf("输入错误,重新输入!\n");
                break;
            }
        }
        while(1);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月19日

悬赏问题

  • ¥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系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。