关闭
囹木 2022-11-22 00:31 采纳率: 100%
浏览 231
已结题

[Error] invalid conversion from 'int' to 'int (*)[4]' [-fpermissive]

代码瑕疵望理解
报错显示:[Error] invalid conversion from 'int' to 'int (*)[4]' [-fpermissive]
Windows11,使用c++dev5.11编译器
感谢指点
报错句已用注释标出


#include<stdio.h>
#define STUDENT 3
#define EXAMS 4
void printArray(int grades[][EXAMS], int pupils, int tests);
void minimum(int grades[][EXAMS], int pupils, int tests);
void maximum(int grades[][EXAMS], int pupils, int tests);
void average(int grades[][EXAMS], int pupils, int tests);

int main()
{   int  studentGrades[STUDENT][EXAMS]=
        {{77,68,86,73},
         {96,87,89,78},
         {70,90,86,81}}; 

    int choice=0;
    
    void (*processGrades[4])( int grades[][EXAMS], int pupils, int tests) = {printArray,minimum,maximum,average};
    puts("Enter a choice:");
    puts("  0  Print the array of grades");
    puts("  1  Find the minimum grade");
    puts("  2  Find the maximum grade");
    puts("  3  Print the average on all tests for each student");
    puts("  4  End program");
    
    printf("please enter your choice:");
    scanf("%d",&choice);
//下句报错
//下句报错
//下句报错
(*processGrades[choice])(studentGrades[STUDENT][EXAMS],STUDENT,EXAMS);//此句报错

}

void printArray(int grades[][EXAMS], int pupils, int tests)     
{printf("%s","                 [0] [1] [2] [3]");
 for(int i = 0;i < pupils; i++){
     printf("\nstdentGrades[%d]", i);
     for(int j = 0;j < tests;j++){
         printf("%-5d",grades[i][j]);
     }
 }
}
void minimum(int grades[][EXAMS], int pupils, int tests)   
{int lowGrade = 100;
for(int i = 0;i < pupils;++i){
    for(int j = 0;j < tests;++j){
        if(grades[i][j] < lowGrade){
            lowGrade = grades[i][j];
        }
    }
}
printf("\nLowset grade: %d",lowGrade);
}
void maximum(int grades[][EXAMS], int pupils, int tests)
{int highGrade = 0;
for(int i = 0;i < pupils;++i){
    for(int j = 0;j < tests;++j){
        if(grades[i][j] > highGrade){
            highGrade = grades[i][j];
        }
    }
}
printf("\nHighest grade: %d",highGrade);
}
void avrage(int grades[][EXAMS], int pupils, int tests) 
{for(int i = 0;i < pupils;++i){
    int total = 0;
    for(int j = 0;j < tests;++j){
        total += grades[i][j];
    }
    printf("The average grade for student %d is %.2f\n",i,total/EXAMS);
}
}

展开全部

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-11-22 00:38
    关注

    studentGrades[STUDENT][EXAMS]改成studentGrades

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月22日
  • 创建了问题 11月22日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部