#include <stdio.h>
int a[100];
typedef struct{
int no;
float sc[3];
float total;
int rank;
int a[100];
}STU;
#define N 10
void input_data(STU s[])
{
/********** Begin **********/
int i;
for(i=0;i<N;i++)
{
scanf("%d %f %f %f",&s[i].no,&s[i].sc[0],&s[i].sc[1],&s[i].sc[2]);
}
/********** End **********/
}
void calculate(STU s[])
{
/********** Begin **********/
int i;
for(i=0;i<N;i++)
{
s[i].total=s[i].sc[0]+s[i].sc[1]+s[i].sc[2];
}
/********** End **********/
}
void sort_total(STU s[])
{
/********** Begin **********/
int i;
int j;
float temp;
for(i=0;i<N;i++){
for(j=0;j<N-1-i;j++){
if(s[j].total<s[j+1].total){
temp =s[j+1].total;
s[j+1].total = s[j].total;
s[j].total = temp;
}
}
a[i] = s[j].no;
//printf("%d\n",s[j].no);
}
/********** End **********/
}
void add_rank(STU s[])
{
/********** Begin **********/
int i;
for(i=1;i<N+1;i++)
{
s[i].rank = i;
}
/********** End **********/
}
void print_data(STU s[])
{
/********** Begin **********/
int i;
int j;
printf("学号: 语文: 数学: 英语: 总分: 名次:\n");
for(i=0;i<N;i++)
{
printf("%5d %.1f %.1f %.1f %.1f %6d\n",a[i],s[i].sc[0],s[i].sc[1],s[i].sc[2],s[i].total,s[i].rank+1);
}
/********** End **********/
}
int main()
{
STU s[10];
input_data(s);
calculate(s);
sort_total(s);
add_rank(s);
print_data(s);
return 0;
}
这是我写的,但是不对 |