依据年龄对学生成绩排序:
#include<stdio.h>
#include<string.h>
struct Student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
int main()
{
char name1[20];
struct Student student1={10101,"Li Lin",'M',18,98,"123 Beijing Road"},student2;
struct Student s[10];
int i,j, t,n;
student1.num=123234;
for (n=0;n<3;n++)
{
scanf("%d",&s[n].num);
scanf("%s",s[n].name);
scanf("%d",&s[n].age);
}
for (n=0;n<3;n++)
{
printf("%d ",s[n].num);
printf("%s ",s[n].name);
printf("%d\n",s[n].age);
}
//s[n].age
for(j=0;j<2;j++)
for(i=0;i<2-j;i++)
if (s[i].age>s[i+1].age)
{
t=s[i].age;
s[i].age=s[i+1].age;
s[i+1].age=t;
t=s[i].num;
s[i].num=s[i+1].num;
s[i+1].num=t;
strcpy(name1,s[i].name);
strcpy(s[i].name,s[i+1].name);
strcpy(s[i+1].name,name1);
}
for (n=0;n<3;n++)
{
printf("%d ",s[n].num);
printf("%s ",s[n].name);
printf("%d\n",s[n].age);
}
return 0;
}
评委打分:
#include <stdio.h>
struct st
{
int sum; //总成绩
double avage; //平均成绩
int xh; //序号
}std1[101],t;
int main()
{
int arr[101][101]={0};
int m,n,i,j,k;
double x;
int max;
int min;
int sum1;
scanf("%d",&n); //评委数
scanf("%d",&m); //选手数
for(i=1;i<=m;i++)
{
std1[i].xh=i; //存储选手的序号
max=-1;
min=999999;
sum1=0;
for(j=1;j<=n;j++)
{
scanf("%d",&arr[i][j]); //输入所有评委对一位选手所给的成绩
sum1=sum1+arr[i][j];
if(max<=arr[i][j])
max=arr[i][j];
if(arr[i][j]<=min)
min=arr[i][j];
}
sum1=sum1-max-min; //求总成绩
x=sum1*1.0/(n-2); //求平均成绩
std1[i].sum=sum1;
std1[i].avage=x;
}
//冒泡排序进行排序,在排序的过程中,对应该选手的所有都要一起调动
for(j=1;j<=m;j++)
for(i=1;i<=m-j;i++)
if(std1[i].avage<std1[i+1].avage)
{
t=std1[i+1];
std1[i+1]=std1[i];
std1[i]=t;
}
for(i=m;i>=1;i--)
{
printf("%d,%d,%lf,%d\n",std1[m-i+1].xh,std1[m-i+1].sum,std1[m-i+1].avage,m-i+1); //输出为 序号,总成绩,平均成绩,名次
}
return 0;
}
根据分数输出成绩:
#include<stdio.h>
struct st
{
char num[100];
char name[50];
int score[100];
int scor;
};
int main()
{
int i,j,n;
struct st student[1000],t;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %s %d %d %d",&student[i].num,&student[i].name,&student[i].score[0],&student[i].score[1],&student[i].score[2]);
student[i].scor=student[i].score[0]+student[i].score[1]+student[i].score[2];
}
for(j=0;j<n-1;j++)
{
for(i=0;i<n-1-i;i++)
{
if(student[i].scor<student[i+1].scor)
{
t=student[i];
student[i]=student[i+1];
student[i+1]=t;
}
}
}
printf("%s %s %d %d %d",student[0].num,student[0].name,student[0].score[0],student[0].score[1],student[0].score[2]);
printf("\n");
return 0;
}
根据出场顺输出信息
#include<stdio.h>
struct pl
{
char name[20];
int num;
int xu;
};
int main()
{
int i,n,x;
struct pl player[1000];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %d %d",player[i].name,&player[i].num,&player[i].xu);
}
for(i=0;i<n;i++)
{
printf("%s %d %d",player[i].name,player[i].num,player[i].xu);
printf("\n");
}
for(;;)
{
scanf("%d",&x);
if(x==0)
break;
printf("%s %d %d\n",player[x-1].name,player[x-1].num,player[x-1].xu);
}
return 0;
}