#include <stdio.h>
#include <stdlib.h>
typedef struct student{
int num;
char name[20];
float score1;
float score2;
float score3;
float sum;
}stu;
void num_sort(stu **p)
{
stu *tem;
int i,j;
for(j=0; j<4; j++)
{
for(i=0; i<4-j; i++)
{
if(p[i]->num > p[i+1]->num)
{
tem=p[i];
p[i]=p[i+1];
p[i+1]=tem;
}
}
}
}
void print(stu **p)
{
int i;
for(i=0; i<5; i++)
{
printf("%d %s\t%5.2f %5.2f %5.2f %5.2f\n",p[i]->num,p[i]->name,
p[i]->score1,p[i]->score2,p[i]->score3,p[i]->sum);
}
}
void print2(stu *p)
{
printf("%d %s\t%5.2f %5.2f %5.2f %5.2f\n",p->num,p->name,
p->score1,p->score2,p->score3,p->sum);
}
void max1(stu **p)
{
int tem,i,max=0;
for(i=0; i<5; i++)
{
if(p[i]->score1 > max)
{
max=p[i]->score1;
tem=i;
}
}
print2(p[tem]);
}
void max2(stu **p)
{
int tem,i,max=0;
for(i=0; i<5; i++)
{
if(p[i]->score2 > max)
{
max=p[i]->score2;
tem=i;
}
}
print2(p[tem]);
}
void max3(stu **p)
{
int tem,i,max=0;
for(i=0; i<5; i++)
{
if(p[i]->score3 > max)
{
max=p[i]->score3;
tem=i;
}
}
print2(p[tem]);
}
void avrg(stu **p)
{
float t1=0,t2=0,t3=0;
int i;
for(i=0; i<5; i++)
{
t1+=p[i]->score1;
t2+=p[i]->score2;
t3+=p[i]->score3;
}
printf("avrg of score1 is %5.2f\n",t1/=5);
printf("avrg of score2 is %5.2f\n",t2/=5);
printf("avrg of score3 is %5.2f\n",t3/=5);
}
void sum_sort(stu **p)
{
stu *tem;
int i,j;
for(j=0; j<4; j++)
{
for(i=0; i<4-j; i++)
{
if(p[i]->sum > p[i+1]->sum)
{
tem=p[i];
p[i]=p[i+1];
p[i+1]=tem;
}
}
}
}
int main()
{
stu s[5];
stu **p;
int i;
p=(stu**)malloc(sizeof(stu*)*5);//sizeof里面别忘了星号
for(i=0; i<5; i++)
{
scanf("%d %s %f%f%f%f",&s[i].num,&s[i].name,
&s[i].score1,&s[i].score2,&s[i].score3,&s[i].sum);
p[i]=&s[i];
}
printf("before sort: \n");
print(p);
printf("------num_sort------\n");
num_sort(p);
print(p);
printf("--------max1--------\n");
max1(p);
printf("--------max2--------\n");
max2(p);
printf("--------max3--------\n");
max3(p);
printf("--------avrg--------\n");
avrg(p);
printf("------sum_sort------\n");
sum_sort(p);
print(p);
system("pause");
}
C语音 练习10-输出学生结构体相关信息
最新推荐文章于 2022-04-14 23:56:15 发布