|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
从键盘输入3个学生的信息(姓名、学号、成绩),存入一个结构体数组中,计算平均分,并按成绩高低排序并输出
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
typedef struct Stu
{
char name[20];
int id;
double score;
}Student;
int scanfStu(Student **Stu,int n)
{
int ret=0;
if (NULL==Stu || 0==n)
{
ret=-1;
return ret;
}
{
Student *temp=NULL;
int i;
temp=(Student *)malloc(sizeof(Student)*n);
memset(temp,0,sizeof(Student)*n);
if (!temp)
{
ret=-2;
return ret;
}
for(i=0;i<n;i++)
{
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",temp[i].name);
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&temp[i].id);
printf("请输入第%d个学生的成绩:",i+1);
scanf("%lf",&temp[i].score);
}
*Stu=temp;
return ret;
}
}
void aveStu(Student *Stu,int n,double *ave)
{
if (NULL==Stu || 0==n || NULL==ave)
{
return;
}
{
int i=0;
double sum=0;
double r=0;
for (i=0;i<n;i++)
{
sum=sum+Stu[i].score;
}
r=sum/n;
*ave=r;
return;
}
}
int sortStu(Student *Stu,int n)
{
int ret=0;
if (NULL==Stu || 0==n)
{
ret=-1;
return ret;
}
{
int i,j;
Student temp;
for (i=0;i<n;i++)
{
for (j=i+1;j<n;j++)
{
if (Stu[i].score<Stu[j].score)
{
temp=Stu[i];
Stu[i]=Stu[j];
Stu[j]=temp;
}
}
}
return ret;
}
}
void printStu(Student *Stu,int n)
{
if (NULL==Stu || 0==n)
{
return;
}
{
int i;
for (i=0;i<n;i++)
{
printf("第%d个学生姓名:%s,学号:%d,成绩:%lf\n",i+1,Stu[i].name,Stu[i].id,Stu[i].score);
}
return;
}
}
void main()
{
Student *st=NULL;
int n=0;
int ret=0;
double ave=0;
printf("请输入学生的个数n:");
scanf("%d",&n);
ret=scanfStu(&st,n);
if (ret!=0)
{
printf("The Function scanfStu() is Error:%d\n",ret);
return;
}
aveStu(st,n,&ave);
printf("Student ave score:%lf\n",ave);
ret=sortStu(st,n);
if (ret!=0)
{
printf("The Function sortStu() is Error:%d\n",ret);
}
printStu(st,n);
system("pause");
return;
} |
|