囹木 2022-11-22 08:31 采纳率: 100%
浏览 213
已结题

[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 08:38
    关注

    studentGrades[STUDENT][EXAMS]改成studentGrades

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图