2011-上黄老师己的《C语言程序设计》实验报告
《C语言程序设计》实验报告
年级:2010级(必修)
学号: 姓名: 专业:
实验题目:编写颁奖程序
在n个选手中评出一等奖1名、二等奖2名、三等奖3名,输出得奖的情况。评分过程为:m个裁判给选手打分,去掉一个最高分和一个最低分后,其他分数的平均分即为选手的得分。根据选手得分情况来评奖。
要求:
1.编写排序函数sort()
2.编写求从一组数中去掉最大和最小数后的平均值函数average()
3.利用以上两个函数评奖
源程序清单:
#include
#include
#define P printf("================\n")
#define Q printf("---------------------------\n")
int average(int m)求平均成绩,m为所有评委人数
{
int s,k=0,max=0,min=1000,sum=0; //定义最高分和最低分用和初值
while(k
{
scanf("%d",&s); //输入每个评委给的分数
if(s>=max)max=s; //评委给分求出最高分
if(s
sum+=s; //评委给分求和
k++;
}
return (sum-max-min)/(k-2); //去掉一个最高分和一个最低分并求平均分
}
void sort(int a[][2],int n)//排序函数a数组2列,n名选手
{
int k,j,t,y=0;
for(k=1;k
{
for(j=1;j<=n-k;j++)
{
if(a[j][1]
{t=a[j][1];
a[j][1]=a[j+1][1];
a[j+1][1]=t;
y=a[j][0];
a[j][0]=a[j+1][0];
a[j+1][0]=y;
}
}
}
}
void main()
{
int i,j,k,m,n,a[10][2];//n为选手m为评委人数
system("color 1a"); printf("请输入比赛人数和评委n/m分别为:\n");
scanf("%d%d",&n,&m);
P;
for(j=1,i=1;j<=n;i++,j++)
{
a[j][0]=i;
printf("请输入%d号选手的评委打分:\n",j);
Q;
a[j][1]=average(m);
}
P;
for(k=1;k<=n;k++)printf("%d号选手的得分是%d\n",k,a[k][1]);
sort(a,n);
P;
printf("一等奖是第%d号选手\n",a[1][0]);
Q;
printf("二等奖是第%d和%d号选手\n",a[2][0],a[3][0]);
Q;
printf("三等奖是第%d、%d和%d号选手\n",a[4][0],a[5][0],a[6][0]);
Q;
}
#include
#define N 7//设选手10名
#define M 5//评委5名
#define P printf("=============================================================\n")
struct stu//定义结构体stu
{long int sno;//选手编号
float avescore; //平均成绩
int score[M]; //5个评委评分组成一个数组
int all;
}stud[N]; //定义结构体数组
void sort(struct stu arr[])//定义排序函数
{int i,j;
struct stu temp;//设临时结构体变量
for(i=0;i
for(j=i+1;j
if(arr[i].avescore
{temp=arr[i];