中易网

编写程序处理10个学生的信息,输出成绩表,再用一个函数输出平均分在前3名的学生姓名及平均分。

答案:2  悬赏:20  
解决时间 2021-03-12 12:26
编写程序处理10个学生的信息,每个学生的信息包括:学号、姓名、三门成绩。要求从键盘输入学生的数据用一个函数实现,输出成绩表(包括每个学生的学号、姓名、三门成绩及平均分数)用一个函数,再用一个函数输出平均分在前3名的学生姓名及平均分。
最佳答案
#include"stdio.h"
#include"stdlib.h" //用于system("pause...");语句
#include"math.h" //用于函数7
#include"string.h"
#include"iostream.h" //fflush(stdin);

int q=0,p=0;

struct stu
{
char name[100];
char cour[10];
float score[100];
};

float f031(struct stu a[])
{
float x;
{
x=(a[q].score[0]+a[q].score[1]+a[q].score[2]+a[q].score[3]+a[q].score[4])/5;
q++;
}
return(x);
}

float f032(struct stu a[])
{
float y[5]; //*
int i;
y[p]=0;
for(i=0;i<10;i++)
y[p]=y[p]+a[i].score[p];
y[p]=y[p]/10;
p++;
return(y[p-1]);
}

float f033(struct stu a[])
{
float c,max=0;
int i,j;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(a[i].score[j]>=max)
max=a[i].score[j];

for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(a[i].score[j]==max)
c=a[i].score[j];
return(c);
}

int f034(struct stu a[])
{
float max=0;
int i,j,w;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(a[i].score[j]>=max)
max=a[i].score[j];
for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(a[i].score[j]==max)
w=i;
return(w);
}

int f035(struct stu a[])
{
float max=0;
int i,j,r;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(a[i].score[j]>=max)
max=a[i].score[j];

for(i=0;i<10;i++)
for(j=0;j<5;j++)
if(a[i].score[j]==max)
r=j;
return(r);
}

float f036(struct stu a[])
{
float x,y=0,z=0;
int i,j;
for(i=0;i<10;i++)
{
x=0;
for(j=0;j<5;j++)
x=x+a[i].score[j];
x=x/5;
y=y+x*x;
z=z+x;
}
return(y/10-(z*z)/(10*10));
}

void main()
{
float f031(a),f032(a),f033(a),f036(a);
int f034(a),f035(a);
struct stu a[100];
int i,j;

printf("此函数为: 输入10个学生5门课的成绩,分别用函数求出:\n (1)每个学生的平均分;(2)每门课的平均分;(3)找出最高的分数所对应的学生和课程;\n(4)求出平均分方差 x0=(x1^+x2^+...+xn^)/n+((x1+x2+...+xn)/n)^ . \n");
printf("请分别输入五门课程\n");
for(i=0;i<5;i++)
scanf("%s",a[i].cour);

printf("请输入十个姓名\n");
for(i=0;i<10;i++)
scanf("%s",a[i].name);
printf("请分别输入十行成绩(每行五列)\n");
for(i=0;i<10;i++)
for(j=0;j<5;j++)
scanf("%f",&a[i].score[j]);

printf("输出为:\n");
printf("姓名");
for(i=0;i<5;i++)
printf("%12s",a[i].cour);
printf("\n");
for(i=0;i<10;i++)
{ printf("%-12s",a[i].name);
for(j=0;j<5;j++)
printf("%-12.1f",a[i].score[j]);
printf("\n");
}

printf("每个学生的平均分为:\n");
for(i=0;i<10;i++)
printf("%-8s%0.1f\n",a[i].name,f031(a));
q=0;
printf("每门课的平均分为:\n");
for(i=0;i<5;i++)
printf("%-12s%0.1f\n",a[i].cour,f032(a));
p=0;
printf("最高的分数所对应的学生和课程为: \n");
printf("%-8.1f%12s%12s\n",f033(a),a[f034(a)].name,a[f035(a)].cour);
printf("平均分方差= ");
printf("%0.2f\n",f036(a));

system("pause...");

}
全部回答

#include <stdio.h> #define n 5   //宏定义使n代表5 typedef struct student//定义结构体 {  char name[20]; //姓名  double aver; //平均分  double sum; // 总分  double chinese,math,english;//语数英成绩 }; void fun(struct student s[]);//声明函数fun(),参数为struct student数组 void main() {  int i;  struct student s[n]; //声明一维长度为n的数组  printf("输入所有学生的姓名 和语、数英、成绩:\n");  for(i=0;i<n;i++)   scanf("%s %lf %lf %lf",s[i].name,&s[i].chinese,&s[i].math,&s[i].english);     //输入学生的姓名,语数英的成绩,期中用空格分开输入

 for(i=0;i<n;i++)  {   s[i].sum=s[i].chinese+s[i].math+s[i].english;//求语数英的总成绩   s[i].aver=s[i].sum/3;//求3门的平均分  }

 fun(s);//调用fun(),s作为实参 } void fun(struct student s[]) {  int i,j;  struct student temp;    //冒泡排序法,通过平均分的大小来排序,从大到小排列  for(i=n-1;i>=0;i--)   for(j=0;j<i;j++)    if(s[j].aver<s[j+1].aver)    {     temp=s[j];     s[j]=s[j+1];     s[j+1]=temp;    }  printf("学生的排名  姓名    语文    数学    英语    总分    平均分\n");  for(i=0;i<3;i++)   printf("    %d    %-10s %-6.2f  %-6.2f  %-6.2f  %-6.2f  %-6.2f\n",i+1,   s[i].name,s[i].chinese,s[i].math,s[i].english,s[i].sum,s[i].aver); }

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
晋文公是一位怎样的君主?
克里斯汀旗舰店我想知道这个在什么地方
一项工程,甲乙共同完成需要12天。如果甲乙共
谁能告诉我一首陈奕迅的歌的歌名,歌词如下
广西医科大学附属卫校收初中生吗
西南林业大学-设计学院在哪里啊,我有事要去
收歌,想听一些有故事情节的歌!
大专毕业证的学信网是是一代身份证对以后有影
98岁老人去世哀悼词语
乐购鞋服在哪里啊,我有事要去这个地方
ipad mini4静音怎么取消
嫁女儿光待客不举行婚礼仪式请帖该怎么写
点击iframe里页面中按钮跳转到action,成功执
ph=6.0用磷酸二氢钾和磷酸氢二钠怎么配制
绥芬河世茂御酒店-会议室这个地址在什么地方
推荐资讯
菜场运来4筐西红柿,3筐黄瓜,每筐西红柿比每
诈骗判决后还能否提起民事诉讼
园本研修读后感500字
勇者大战魔物娘怎么将三章合并
威海鲁东驾校最受欢迎的好教练
有谁有步非烟的《龙之羽翼》txt??
【求解】一道行测数学运算题
找文 bl主受文,受的武功高强,攻的武功不高
乡镇教师和乡镇公务员,如何抉择?
甲乙两车分别从A、B两地同时出发,相向而行,当
农村信用社银行卡挂失几天能领回来?
一女孩给起了个网名叫(等待初心)是啥意思
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?