编写程序处理10个学生的信息,输出成绩表,再用一个函数输出平均分在前3名的学生姓名及平均分。
- 提问者网友:騷女、無惡不作
- 2021-03-12 02:55
- 二级知识专家网友:余生继续浪
- 2021-03-12 03:01
#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...");
}
- 1楼网友:温柔刺客
- 2021-03-12 03:27
#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); }