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;

}