C语言二维数组的函数调用

#include "stdafx.h"#define A 100#define sub 3int ReadMark(int stu);void StuAverage(int Mark[][sub], int stu);void SubAverage(int Mark[][sub], int stu);int main(){ int Mark[A][sub]; int stu; printf("Student Numbers:"); scanf_s("%d", &stu); getchar(); Mark[A][sub] = ReadMark(stu); printf("%d\n", Mark[0][0]); //验证行代码 StuAverage(Mark, stu); SubAverage(Mark, stu); getchar();}int ReadMark(int stu){ int Mark[A][sub]; for (int Number = 0; Number < stu; Number++) { printf("输入第%d位学生的成绩:\n", (Number + 1)); for (int Subject = 0; Subject < sub; Subject++) { printf("输入第%d科的成绩:", (Subject + 1)); scanf_s("%d", &Mark[Number][Subject]); getchar(); } } return Mark[A][sub];}void StuAverage(int Mark[][sub], int stu){ int Number, Subject, Total; for (Number = 0; Number < stu; Number++) { Total = 0; for (Subject = 0; Subject < sub; Subject++) { Total = Total + Mark[Number][Subject]; } printf("第%d位学生平均成绩为:%d\n", (Number + 1), Total / stu); }}void SubAverage(int Mark[][sub], int stu){ int Number, Subject, Total; for (Subject = 0; Subject < sub; Subject++) { Total = 0; for (Number = 0; Number < stu; Number++) { Total = Total + Mark[Number][Subject]; } printf("第%d课平均成绩为:%d\n", (Subject + 1), Total / sub); }}

函数调用不能这么用,第36行。C标准里面返回值是不能直接返回一个数组的,只能返回数组的首地址。输出学生成绩和每科成绩那个函数,你可以定义一个全局变量数组,还有求平均值最好用float 或者double,用int会造成精度流失。帮你调试了一下,大概就这样吧

温馨提示:答案为网友推荐,仅供参考
相似回答