C语言编程,输入10个学生5门课的成绩,分别用函数实现以下功能:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程,输入10个学生5门课的成绩,分别用函数实现以下功能:相关的知识,希望对你有一定的参考价值。

1.计算每个学生的平均分;
2.计算每门课的平均分;
3.找出所有50个分数中最高的分数所对应的学生和课程;
4.计算平均分方差

#include<stdio.h>
#include<windows.h>
main()

int i,j,li=0,lj=0;
float score[10][5],average[10],a1,a2,a3,a4,a5,largest=0,fc=0,a=0;
//score是50个学生的成绩,average是5门课的平均成绩,a1-a5分别是5门课的平均成绩,li是最高分的学生
//lj是最高分的学科,largest是最高分,fc是平均分方差,a是50个成绩的平均分
printf("请输入10个学生的成绩,按照语文、数学、英语、物理、化学的顺序依次输入:\n");
for(i=0;i!=10;++i)

printf("第%d个学生:\n",i+1);
for(j=0;j!=5;++j)

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

largest=score[i][j];
li=i+1;
lj=j+1;

a=a+score[i][j];

average[i]=(score[i][0]+score[i][1]+score[i][2]+score[i][3]+score[i][4])/5;
a1=a1+score[i][0];
a2=a2+score[i][1];
a3=a3+score[i][2];
a4=a4+score[i][3];
a5=a5+score[i][4];

a=a/50;
for(i=0;i!=10;++i)

for(j=0;j!=5;++j)

fc=fc+(score[i][j]-a)*(score[i][j]-a);



fc=fc/50;
a1=a1/10;
a2=a2/10;
a3=a3/10;
a4=a4/10;
a5=a5/10;
printf("50个学生的成绩如下:\n");
printf("学生编号 语文 数学 英语 物理 化学\n");
for(i=0;i!=10;++i)

printf("%8d ",i);
for(j=0;j!=5;++j)

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

printf("\n");

for(i=0;i!=10;++i)
printf("第%d个学生的平均分为:%.2f\n",i+1,average[i]);
printf("第1门课的平均分为:%.2f\n",a1);
printf("第2门课的平均分为:%.2f\n",a2);
printf("第3门课的平均分为:%.2f\n",a3);
printf("第4门课的平均分为:%.2f\n",a4);
printf("第5门课的平均分为:%.2f\n",a5);
printf("50个分数中最高的分数是第%d个学生的第%d门课,分数为:%.2f\n",li,lj,largest);
printf("平均分方差为:%.2f\n",fc);
system("pause");
参考技术A #include <stdio.h>
#include <string.h>

//定义了5门科目的名字,自己改科目名字。
#define SUBJECT1 "语文"
#define SUBJECT2 "数学"
#define SUBJECT3 "英语"
#define SUBJECT4 "物理"
#define SUBJECT5 "综合"

float averagescore[100]=0; //存放每个学生的平均分

int main()

void allnamescore(char name[][100],float score[][5],int count); //输出所有学生成绩
void print_sbaverage(char name[][100],float score[][5],int count); //打印每个学生的平均分
void subjectaverage(char name[][100],float score[][5],int count); //每门科目的平均分
void highscore(char name[][100],float score[][5],int count); //所有成绩中最高分对应的学生和科目
void variancescore(char name[][100],float score[][5],int count); //每个学生平均分方差

char name[100][100]='\0'; //存放学生名字,最多存放100个学生
float score[100][5]=0; //存放学生各科成绩,最多存放100条记录,每条记录5门科目
int i,count; //专用于循环,count是统计学生数量
char sign; //sign是操作列表菜单值

while(1) //主程序核心代码循环,用于程序重新运行,即重新录入所有学生所有信息。

//输入名字
printf("说明:\n名字输入结束后,请输入0结束名字输入\n");
for(i=0;i<100;i++)

printf("请输入第%d个名字:",i+1);
gets(name[i]);
if(name[i][0]=='0')break;

count=i;

//输入成绩
printf("说明:\n每个学生分别输入%s %s %s %s %s的成绩,用空格隔开。\n",SUBJECT1,SUBJECT2,SUBJECT3,SUBJECT4,SUBJECT5); //SUBJECT1~5见开头define
printf("当发现上一个学生成绩输入错误,请输入-1。\n当发现有更前的成绩输入错误是,请输入-2进行所有成绩重新输入。\n");
for(i=0;i<count;i++)

printf("请输入%s的成绩,用空格隔开:",name[i]);
scanf("%f",&score[i][0]);
if(score[i][0]==-1)

i-=2;continue;

else if(score[i][0]==-2)

i=-1;continue;

scanf("%f %f %f %f",&score[i][1],&score[i][2],&score[i][3],&score[i][4]);
getchar();


allnamescore(name,score,count);//输出所有学生成绩

while(1)

printf("请输入要进行操作对应的数字:\n");
printf("1、查询所有学生成绩:\n");
printf("2、计算每个学生的平均分:\n");
printf("3、计算每一门科目的平均分:\n");
printf("4、找出所有成绩中分数最高的那个学生及对应的科目:\n");
printf("5、计算每一位同学的平均分方差:\n");
printf("0、格式化全部数据(清空学生名字和所有成绩):\n");
scanf("%c",&sign);
getchar();
switch(sign)

case '1':allnamescore(name,score,count);break;
case '2':print_sbaverage(name,score,count);break;
case '3':subjectaverage(name,score,count);break;
case '4':highscore(name,score,count);break;
case '5':variancescore(name,score,count);break;
case '0':;break;
default :printf("输入有误,请重新输入\n");break;
;

if(sign=='0')break; //退出循环,即进入重新运行程序的循环操作


//已经没有核心代码,准备结束程序了。按0就结束程序,否则程序重新走一遍。
printf("输入0退出程序,输入其他内容重新开始程序\n");
scanf("%c",&sign);
getchar();
if(sign=='0')break;


return 0;


//输出所有人的成绩
void allnamescore(char name[][100],float score[][5],int count)

int i;
printf("%20s\t%s\t%s\t%s\t%s\t%s\n"," ",SUBJECT1,SUBJECT2,SUBJECT3,SUBJECT4,SUBJECT5);
for(i=0;i<count;i++)

printf("%20s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",name[i],score[i][0],score[i][1],score[i][2],score[i][3],score[i][4]);



//计算每个学生的平均分
void sbaverage(char name[][100],float score[][5],int count)

int i;
for(i=0;i<count;i++)

averagescore[i]=(score[i][0]+score[i][1]+score[i][2]+score[i][3]+score[i][4])/5;



//打印每个学生的平均分
void print_sbaverage(char name[][100],float score[][5],int count)

void sbaverage(char name[][100],float score[][5],int count); //声明计算每个学生的平均分
int i;
if(averagescore[0]==0)sbaverage(name,score,count); //当发现没有值时,表示没有计算过平均分,得调用函数计算一下平均分
for(i=0;i<count;i++)

printf("%20s\t%.2f\n",name[i],averagescore[i]);



//每门科目的平均分
void subjectaverage(char name[][100],float score[][5],int count)

float average[5]=0; //用于存放5门科目的平均分。先放总分,再除count得到平均分
int line,item; //line表示行,item表示列

//计算每门科目的平均分
for(item=0;item<5;item++) //一共有5门科目

for(line=0;line<count;line++) //每门科目有count个成绩

average[item]+=score[line][item]; //暂存总分,最后再除count得到平均分

average[item]/=count; //总分最后除count得到平均分


//输出每门科目的平均分
printf("%20s\t%s\t%s\t%s\t%s\t%s\n%20s","科目:",SUBJECT1,SUBJECT2,SUBJECT3,SUBJECT4,SUBJECT5,"平均分:");
for(item=0;item<5;item++) //一共有5门科目

printf("\t%.2f",average[item]);

printf("\n");


//所有成绩中最高分对应的学生和科目
void highscore(char name[][100],float score[][5],int count)

float maxscore; //存放最高分
char subject[10]='\0'; //存放最高分的科目
int line,item,maxline,maxitem; //line和item分别是行列标。maxline存放最高分的行号,maxitem存放最高分的列号

//查找最高分的坐标
for(line=maxscore=0;line<count;line++)

for(item=0;item<5;item++)

if(score[line][item]>maxscore)maxscore=score[maxline=line][maxitem=item];



//最高分的科目是哪一科。
switch(maxitem)

case 0:strcpy(subject,SUBJECT1);break;
case 1:strcpy(subject,SUBJECT2);break;
case 2:strcpy(subject,SUBJECT3);break;
case 3:strcpy(subject,SUBJECT4);break;
case 4:strcpy(subject,SUBJECT5);break;

printf("%s的%s最高分,分数为%.2f\n",name[maxline],subject,score[maxline][maxitem]);


//每个学生平均分方差
void variancescore(char name[][100],float score[][5],int count)

void sbaverage(char name[][100],float score[][5],int count); //声明计算每个学生的平均分
float variance; //方差值
float average2,average1; //average2存放每个平均分的平方和,average1存放每个平均分的总和。
int i; //计数专用

if(averagescore[0]==0)sbaverage(name,score,count);
else

//average2存放每个平均分的平方和
for(i=average2=0;i<count;i++)

average2+=averagescore[i]*averagescore[i];


//average1存放每个平均分的总和
for(i=average1=0;i<count;i++)

average1+=averagescore[i];


variance=average2/count-(average1/count)*(average1/count); //方差
printf("平均分方差:%f\n",variance);

参考技术B #include<stdio.h>
#include<windows.h>
main()

int
i,j,li=0,lj=0;
float
score[10][5],average[10],a1,a2,a3,a4,a5,largest=0,fc=0,a=0;
//score是50个学生的成绩,average是5门课的平均成绩,a1-a5分别是5门课的平均成绩,li是最高分的学生
//lj是最高分的学科,largest是最高分,fc是平均分方差,a是50个成绩的平均分
printf("请输入10个学生的成绩,按照语文、数学、英语、物理、化学的顺序依次输入:\n");
for(i=0;i!=10;++i)

printf("第%d个学生:\n",i+1);
for(j=0;j!=5;++j)

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

largest=score[i][j];
li=i+1;
lj=j+1;

a=a+score[i][j];

average[i]=(score[i][0]+score[i][1]+score[i][2]+score[i][3]+score[i][4])/5;
a1=a1+score[i][0];
a2=a2+score[i][1];
a3=a3+score[i][2];
a4=a4+score[i][3];
a5=a5+score[i][4];

a=a/50;
for(i=0;i!=10;++i)

for(j=0;j!=5;++j)

fc=fc+(score[i][j]-a)*(score[i][j]-a);


fc=fc/50;
a1=a1/10;
a2=a2/10;
a3=a3/10;
a4=a4/10;
a5=a5/10;
printf("50个学生的成绩如下:\n");
printf("学生编号
语文
数学
英语
物理
化学\n");
for(i=0;i!=10;++i)

printf("%8d
",i);
for(j=0;j!=5;++j)

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

printf("\n");

for(i=0;i!=10;++i)
printf("第%d个学生的平均分为:%.2f\n",i+1,average[i]);
printf("第1门课的平均分为:%.2f\n",a1);
printf("第2门课的平均分为:%.2f\n",a2);
printf("第3门课的平均分为:%.2f\n",a3);
printf("第4门课的平均分为:%.2f\n",a4);
printf("第5门课的平均分为:%.2f\n",a5);
printf("50个分数中最高的分数是第%d个学生的第%d门课,分数为:%.2f\n",li,lj,largest);
printf("平均分方差为:%.2f\n",fc);
system("pause");
参考技术C (1)求每个学生的平均分;
(2)求每门课程的平均分。
#include<stdio.h>
#include<math.h>
#define num 10

typedef struct student

char name[20];
float math;
float englis;
float computer;
float Chinese;
float history;
STUDENT;

int main(void)

STUDENT stu[num];
int i;
float score,sum,average;
char s[10];
float scoreMath,scoreEng,scoreCom,scoreChi,scoreHis;

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

printf("Name: ");
gets(stu[i].name);

printf("math score: ");
scanf("%f",&score);
stu[i].math = score;

printf("englis score: ");
scanf("%f",&score);
stu[i].englis = score;

printf("computer score: ");
scanf("%f",&score);
stu[i].computer = score;

printf("Chinese score: ");
scanf("%f",&score);
stu[i].Chinese = score;

printf("history score: ");
scanf("%f",&score);
stu[i].history = score;

gets(s);//功能是接受最后一个回车符,然后下一次gets(stu[i].name);才能起到作用



//求每个学生的平均分数
for(i=0;i<num;i++)

sum=0;
sum +=stu[i].math;
sum +=stu[i].englis;
sum +=stu[i].computer;
sum +=stu[i].Chinese;
sum +=stu[i].history;
average = sum/5;

printf("%s's average score is:%f\n",stu[i].name,average);


//求每门课的平均成绩
scoreMath=0;
scoreEng=0;
scoreCom=0;
scoreChi=0;
scoreHis=0;
for(i=0;i<num;i++)

scoreMath += stu[i].math;
scoreEng += stu[i].englis;
scoreCom += stu[i].computer;
scoreChi += stu[i].Chinese;
scoreHis += stu[i].history;


printf("math's average score is:%f\n",scoreMath/num);
printf("englis's average score is:%f\n",scoreEng/num);
printf("computer's average score is:%f\n",scoreCom/num);
printf("Chinese's average score is:%f\n",scoreChi/num);
printf("history's average score is:%f\n",scoreHis/num);

return 0;
参考技术D #include<stdio.h>
#include<windows.h>
main()

int
i,j,li=0,lj=0;
float
score[10][5],average[10],a1,a2,a3,a4,a5,largest=0,fc=0,a=0;
//score是50个学生的成绩,average是5门课的平均成绩,a1-a5分别是5门课的平均成绩,li是最高分的学生
//lj是最高分的学科,largest是最高分,fc是平均分方差,a是50个成绩的平均分
printf("请输入10个学生的成绩,按照语文、数学、英语、物理、化学的顺序依次输入:\
");
for(i=0;i!=10;++i)

printf("第%d个学生:\
",i+1);
for(j=0;j!=5;++j)

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

largest=score[i][j];
li=i+1;
lj=j+1;

a=a+score[i][j];

average[i]=(score[i][0]+score[i][1]+score[i][2]+score[i][3]+score[i][4])/5;
a1=a1+score[i][0];
a2=a2+score[i][1];
a3=a3+score[i][2];
a4=a4+score[i][3];
a5=a5+score[i][4];

a=a/50;
for(i=0;i!=10;++i)

for(j=0;j!=5;++j)

fc=fc+(score[i][j]-a)*(score[i][j]-a);


fc=fc/50;
a1=a1/10;
a2=a2/10;
a3=a3/10;
a4=a4/10;
a5=a5/10;
printf("50个学生的成绩如下:\
");
printf("学生编号
语文
数学
英语
物理
化学\
");
for(i=0;i!=10;++i)

printf("%8d
",i);
for(j=0;j!=5;++j)

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

printf("\
");

for(i=0;i!=10;++i)
printf("第%d个学生的平均分为:%.2f\
",i+1,average[i]);
printf("第1门课的平均分为:%.2f\
",a1);
printf("第2门课的平均分为:%.2f\
",a2);
printf("第3门课的平均分为:%.2f\
",a3);
printf("第4门课的平均分为:%.2f\
",a4);
printf("第5门课的平均分为:%.2f\
",a5);
printf("50个分数中最高的分数是第%d个学生的第%d门课,分数为:%.2f\
",li,lj,largest);
printf("平均分方差为:%.2f\
",fc);
system("pause");

C语言试题练习:输入5个学生5门课的成绩,分别用函数求:1.每个学生平均分;2.每门课的平均分;3.找出所有分数中最高分

C语言试题练习:输入5个学生5门课的成绩,分别用函数求:①每个学生平均分;②每门课的平均分;③找出所有分数中最高分

//每个学生平均分;
void Average_Students(int a[5][5])
    
	
	int i, j;
	for (i = 0; i < 5; i++)
	
		//第i+1个同学
		double c;
		int b = 0;
		for (j = 0; j < 5; j++)
		//第i+1个同学的成绩平均分
			b += a[i][j];
			c = b / 5.00;
		
		printf("第%d个同学的成绩平均分%0.2f\\n", i + 1, c);
	
	

//每门课的平均分;
void Average_Class(int a[5][5]) 
    
	int i, j;
	for (j = 0; j < 5; j++) //这里a【i】【j】,j循环放在最外面
		double c;
		int b = 0;
		for (i = 0; i < 5; i++)
		
			b += a[i][j];
			c = b / 5;
			//printf("%d\\t", a[i][j]);     这里可以看下输出的分数列的数据
		
		printf("第%d门课的平均分分别为%0.2f\\n", j + 1, c);
	

//所有分数中最高分;
void Max_Point(int a[5][5]) 
   
	int maxh[5];
	int i, j, max;
	for (i = 0, j = 0; i < 5; i++)
	
		maxh[i] = a[i][j];//假设每行第一个是最大值 	
		for (j = 0; j < 5 - 1; j++)
		   //此行元素分别与之比较,较大值为maxh[i] 
			if (a[i][j + 1] >= maxh[i])
			
				maxh[i] = a[i][j + 1];
			
		
	
	for (i = 0; i < 5 - 1; i++) 
	
		max = maxh[i];//假设第一列的数是最大值 
        //整列元素分别与之比较,较大值为max
		if (maxh[i + 1] >= max)
		
			max = maxh[i + 1];
		
	
	printf("所有分数中最高分max=%d\\n", max);

int main()

	int a[5][5];
	int i, j;
	for (i = 0; i < 5; i++)
	
		printf("第%d个同学的成绩:", i + 1);
		for (j = 0; j < 5; j++)
		
			scanf_s("%d", &a[i][j]);
		
	//**输入时数字之间用空格分隔**
	printf("\\n");
	Average_Students(a); printf("\\n");
	Average_Class(a); printf("\\n");
	Max_Point(a); printf("\\n");//输出空格可去掉,这样只是为了输出结果美观
	return 0;


输出结果

1个同学的成绩:56 54 81 62 652个同学的成绩:85 96 42 68 783个同学的成绩:96 84 35 65 454个同学的成绩:54 31 41 68 485个同学的成绩:21 95 87 65 321个同学的成绩平均分63.602个同学的成绩平均分73.803个同学的成绩平均分65.004个同学的成绩平均分48.405个同学的成绩平均分60.001门课的平均分分别为62.002门课的平均分分别为72.003门课的平均分分别为57.004门课的平均分分别为65.005门课的平均分分别为53.00

所有分数中最高分max=95



要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .


参考链接 https://blog.csdn.net/weixin_45391986/article/details/105919562

以上是关于C语言编程,输入10个学生5门课的成绩,分别用函数实现以下功能:的主要内容,如果未能解决你的问题,请参考以下文章

C语言试题练习:输入5个学生5门课的成绩,分别用函数求:1.每个学生平均分;2.每门课的平均分;3.找出所有分数中最高分

C语言试题练习:输入5个学生5门课的成绩,分别用函数求:1.每个学生平均分;2.每门课的平均分;3.找出所有分数中最高分

C语言试题练习:输入5个学生5门课的成绩,分别用函数求:1.每个学生平均分;2.每门课的平均分;3.找出所有分数中最高分

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

c语言 结构体和共用体 1. 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据

C语言实验题 求大神指点