C语言程序设计 题目: 编写颁奖程序: 在N个选手中评出一等奖1名,二等奖2名,三等奖3名,输入得奖情况。
#include <stdio.h>
#include <stdlib.h>
void sort(float *a, int n)
{
int i, j;
float t;
for(i=1; i<n; ++i)
for(j=n-1; j>=i; --j)
if(a[j-1]<a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
float average(float *a,int n)
{
float av;
int i;
sort(a,n);
for(i=1; i<n-1; i++)av+=a[i];
av/=n-2;
return av;
}
int main()
{
int i,j,n,m;
char ch;
float *a,*b,*c;
float s1,s2,s3;
printf("输入选手人数:");
while(scanf("%d%c",&n,&ch)!=1)
{
if(ch=='\n')break;
printf("input error\n");
fflush(stdin);
}
a=(float*)malloc(n*sizeof(float));
c=(float*)malloc(n*sizeof(float));
if(!a||!c)
{
printf("malloc error");
exit(0);
}
printf("输入评委人数:");
while(scanf("%d%c",&m,&ch)!=1)
{
if(ch=='\n')break;
printf("input error\n");
fflush(stdin);
}
b=(float*)malloc(m*sizeof(float));
if(!b)
{
printf("malloc error");
exit(0);
}
for(i=0; i<n; i++)
{
printf("输入第%d人成绩\n",i+1);
printf("输入%d个成绩:",m);
for(j=0; j<m; j++)
{
while(scanf("%f%c",&b[j],&ch)!=1)
{
if(ch=='\n'||ch==' ')break;
printf("输入错误,重新出入第%d个成绩\n",j+1);
fflush(stdin);
}
}
a[i]=c[i]=average(b,m);
printf("平均成绩:%.2f\n",a[i]);
}
for(i=0; i<n; i++)printf("%.2f ",a[i]);
sort(a,n);
s1=a[0];
printf("\n第1名\n");
for(j=0; j<n; j++)
{
if(c[j]==s1)printf("%d ",j+1);
}
for(i=1; i<n; i++)if(a[i]!=s1)break;
if(i<n)
{
s2=a[i];
printf("\n第2名\n");
for(j=0; j<n; j++)
{
if(c[j]==s2)printf("%d ",j+1);
}
for(i++; i<n; i++)if(a[i]!=s2)break;
if(i<n)
{
s3=a[i];
printf("\n第3名\n");
for(j=0; j<n; j++)
{
if(c[j]==s3)printf("%d ",j+1);
}
}
}
return 0;
}