M个学生的N门课程的成绩,分析每个学生的平均成绩和每一门课程的平均成绩。用C语言 函数来写。

请在下列成绩的基础上进行修改,进行程序功能的函数化,实现学生成绩的录入、均值计算及信息显示等功能采用函数来解决。在功能函数化中,不能采用全局变量。
#include<stdio.h>
#define STUDENT 3
#define COURSE 2
int main()
{
int i;
float grade[STUDENT][COURSE];
float student_average[STUDENT],course_average[COURSE];
float *position, *ptr, (*ptr_col)[COURSE], sum;
/*录入学生成绩,将存储成绩的grade数组看出一维数组*/
printf("请输入学生成绩\n");
for (position=&grade[0][0];position<=&grade[STUDENT-1][COURSE-1];position++)
{
scanf("%f",position);
}
/*按行求学生成绩均值**/
ptr=&student_average[0];
for (i=0;i<STUDENT;i++)
{
sum=0;
for (position=grade[i];position<grade[i]+COURSE;position++)
{
sum+=*position;
}
*ptr++=sum/COURSE;
}

/*按列求课程平均成绩*/
ptr=&course_average[0];
for (i=0;i<COURSE;i++)
{
sum=0;
for (ptr_col=&grade[0];ptr_col<=&grade[STUDENT-1];ptr_col++)
{
sum+=(*ptr_col)[i];
}
*ptr++=sum/STUDENT;
}

for (i=0;i<COURSE;i++)
{
printf("%8.2f", course_average[i]);
}
printf("\n");
for (i=0;i<STUDENT;i++)
{
printf("%8.2f", student_average[i]);
}

return 0;
}

第1个回答  2018-11-29
#include <stdio.h>
#include <string.h>
struct stu
{
char name[32];
int english;
int chinese;
int math;
.....n门课程
};
void main(void)
{
int i,score,average;
char NAME;
struct stu *STU[m] //m为已知的学生个数
for(i=0;i<M;i++)
{
STU = malloc(struct stu);
printf("请输入第%d个学生的姓名",i+1);
scanf("%s",&NAME);
strcpy(STU[1]->name,NAME);
printf("english :")
scanf("%d",&score);
STU[i]->english = score;
...........依次类推
}
printf("要查询的学生姓名:")
scanf("%s",NAME);
for(i = 0,i < m;i++)
{
if(!(strcmpa[i]->name,NAME)
{
average = (STU[i]->english+STU[i]->chinese+STU[i]->math)/n;
}
}
for(i=0;i<m;i++)
{
free(a[i]);
}
exit(1);
}本回答被网友采纳
第2个回答  2018-11-29
这个不要赋值,都定义float了,还赋什么初值? float s[100]; 这个printf语句要移动到这层循环外。 for(i=0;i
相似回答