输入10个学生5门课的成绩,分别用函数实现下列功能:
①计算每个学生的平均分;
②计算每门课的平均分;
③找出所有50个分数中最高的分数所对应的学生和课程;
④计算平均分方差:
其中,xi为某一学生的平均分。
#include <stdio.h> #include <string.h> #include <math.h> #define MAX 100 #define X 10 #define Y 5 void input(char lesson[Y][MAX],float score[X][Y]){ int i,j; for(i=0;i<X;i++){ printf("请输入第%d个同学的成绩:\n",i+1); for(j=0;j<Y;j++){ printf("%s:",lesson[j]); scanf("%f",&score[i][j]); while(!(score[i][j]<=100&&score[i][j]>=0)){ printf("输入的值不符合规范,请再次输入:"); scanf("%f",&score[i][j]); } } } } void print(char lesson[Y][MAX],float score[X][Y]){ int i,j; printf("-----------------------------------成绩输出---------------------------------\n学号 "); for(j=0;j<Y;j++){ printf("%s\t ",lesson[j]); } printf("\n"); for(i=0;i<X;i++){ printf("%2d ",i+1); for(j=0;j<Y;j++){ printf("%3.1f\t ",score[i][j]); } printf("\n"); } } void average(char lesson[Y][MAX],float score[X][Y]){ int i,j; printf("-----------------------------------平均成绩---------------------------------\n"); for(j=0;j<Y;j++){ printf("%s\t ",lesson[j]); } printf("\n"); for(i=0;i<Y;i++){ float temp=0; for(j=0;j<X;j++){ temp+=score[j][i]; } printf("%3.1f\t ",temp/10.0); } } void MAX_S(char lesson[Y][MAX],float score[X][Y]){ int i,j; printf("\n-----------------------------科目最高成绩及获得者-------------------------------\n"); printf("\n"); for(i=0;i<Y;i++){//Y 5 X 10 printf("%s\t",lesson[i]); float max_score=score[0][i]; for(j=0;j<X;j++){ if(max_score<score[j][i]){ max_score=score[j][i]; } } for(j=0;j<X;j++){ if(max_score==score[j][i]){ printf("[学号:%d 分数:%3.1f]\t",j+1,score[j][i]); } } printf("\n"); } } void FC(float score[X][Y]){ int i,j; float temp=0,aver=0,aver_double=0; float av[10]; for(i=0;i<X;i++){ temp=0; for(j=0;j<Y;j++){ temp+=score[i][j]; } av[i]=temp/Y; } for(i=0;i<X;i++){ aver_double+=pow(av[i],2); aver+=av[i]; } float fangcha=aver_double/X-pow(aver/X,2); printf("方差是:%f",fangcha); } int main(){ char lesson[Y][MAX]={{"CHINESE"},{"MATH"},{"ENGLISH"},{"PHYSIC"},{"HISTORY"}}; float score[MAX][MAX]; input(lesson,score); print(lesson,score); average(lesson,score); MAX_S(lesson,score); FC(score); return 0; }