首页 > 试题广场 >

输入10个学生5门课的成绩,分别用函数实现下列功能:

[问答题]

输入10个学生5门课的成绩,分别用函数实现下列功能:

①计算每个学生的平均分;

②计算每门课的平均分;

③找出所有50个分数中最高的分数所对应的学生和课程;

④计算平均分方差:

其中,xi为某一学生的平均分。



推荐

#include<stdio.h>

#define N 10

#define M 5

float score[N][M]:

float a_stu[N],a_cour[M]:

int r,c;


int main()

{int i,j;

float h;

float s_var(void);

float highest();

void input_stu(void);

void aver_stu(void);

void aver_cour(void;

input_stu();

aver_stu();

aver_cour();

printf("\n No. courl cour2 cour3 cour4 cour5 aver\n");

for(i=0;i<N;i++)

{printf("\n NO %2d",i+1);

for(j=0;j<M;j++)

printf("%8.2f",score[i][j]);

printf("%8.2f\n"a_stu[i]);

}

printf("\naverage:");

for(j=0;j<M;j++)

printf("%8.2f",a_cour[j]);

printf("\n”);

h=highest();

printf("highest%7.2f  NO.%2d  course %2d\n",h,r,c);

printf("variance %8.2f\n",s_var());

return 0;

}


void input_stu(void)

{int i,j;

for(i=0;i<N;i++)

{printf("\ninput score of student%2d:\n",i+1);

for(j=0;j<M;j++)

scanf("%f",&score[i][j]);

}

}


void aver_stu(void

{int i,j;

float s;

for(i=0;i<N;i++)

{for (j=0,s=0;j<M;j++)

s+=score[i][j]:

a_stu[i]=s/5.0;

}

}


void aver_cour(void)

{int i,j;

float s;

for (j=0;j<M;j++)

{s=0;

for(i=0;i<N;i++)

s+=score[i][j];

a_cour[j]=s/(float)N;

}

}


float highest()

{float high,

int i,j;

high=score[0][0];

for(i=0;i<N;i++)

for(j=0;j<M;j++)

if(score[i][j]>high)

{high=score[i][j]:

r=i+1;

c=j+1;

}

return(high);

}


float s_var(void)

{int i;

float sumx,sumxn;

sumx=0.0;

sumxn=0.0;

for(i=0;i<N;i++)

{sumx+=a_stu[i]*a_stu[i];

sumxn+=a_stu[i];

}

return(sumx/N-(sumxn/N)*(sumxn/N));

}


发表于 2018-03-25 10:41:55 回复(0)
#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;
}
编辑于 2020-04-27 14:58:04 回复(0)