C语言编程,输入10个学生5门课的成绩,分别用函数实现以下功能:
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程,输入10个学生5门课的成绩,分别用函数实现以下功能:相关的知识,希望对你有一定的参考价值。
1.计算每个学生的平均分;
2.计算每门课的平均分;
3.找出所有50个分数中最高的分数所对应的学生和课程;
4.计算平均分方差
#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 65
第2个同学的成绩:85 96 42 68 78
第3个同学的成绩:96 84 35 65 45
第4个同学的成绩:54 31 41 68 48
第5个同学的成绩:21 95 87 65 32
第1个同学的成绩平均分63.60
第2个同学的成绩平均分73.80
第3个同学的成绩平均分65.00
第4个同学的成绩平均分48.40
第5个同学的成绩平均分60.00
第1门课的平均分分别为62.00
第2门课的平均分分别为72.00
第3门课的平均分分别为57.00
第4门课的平均分分别为65.00
第5门课的平均分分别为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.找出所有分数中最高分