每个学生的成绩信息包括:学号、平时成绩、期*成绩、**成绩、总评成绩,采用动态方法创建数组用于储存学生信息,输入各项成绩,计算总评成绩,具体如下
定义一个学生信息结构,然后输入,同时计算出总评分,按总评分进行排序
#include <stdio.h>
typedef struct _stuInfo
{
int id; //学号
int s1; //平时成绩
int s2; //期中成绩
int s3; //期末成绩
float total; //总评成绩
}stuInfo;
void input(stuInfo *stu,int n)
{
for(int i=0;i<n;i++)
{
printf("输入第%d个学生的学号,平时成绩,期中成绩,期末成绩:",i+1);
scanf("%d%d%d%d",&stu[i].id,&stu[i].s1,&stu[i].s2,&stu[i].s3);
stu[i].total = stu[i].s1*0.2+stu[i].s2*0.2+stu[i].s3*0.6;
}
}
void print(stuInfo *stu,int n)
{
for(int i=0;i<n;i++)
printf("学号:%d,总评成绩:%.1f\n",stu[i].id,stu[i].total);
}
void add(stuInfo *stu,int n)
{
printf("输入第%d个学生的学号,平时成绩,期中成绩,期末成绩:",n);
scanf("%d%d%d%d",&stu[n].id,&stu[n].s1,&stu[n].s2,&stu[n].s3);
stu[n].total = stu[n].s1*0.2+stu[n].s2*0.2+stu[n].s3*0.6;
n++;
}
int del(stuInfo *stu,int n)
{
printf("请输入需要删除的学生学号:");
int id;
scanf("%d",&id);
for(int i=0;i<n;i++)
{
if(stu[i].id == id)
{
for(int j=i;j<n-1;j++)
stu[j] = stu[j+1];
return 1;
}
}
return 0;
}
void sort(stuInfo *stu,int n,int order)
{
if(order == 1)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(stu[j].id > stu[j+1].id)
{
stuInfo t = stu[j];
stu[j] = stu[j+1];
stu[j+1] = t;
}
}
}
}
else if(order == 2)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(stu[j].total > stu[j+1].total)
{
stuInfo t = stu[j];
stu[j] = stu[j+1];
stu[j+1] = t;
}
}
}
}
}
int main()
{
stuInfo *stu = (stuInfo*)malloc(sizeof(stuInfo)*100);
int n;
printf("输入学生人数:");
scanf("%d",&n);
input(stu,n);
print(stu,n);
//
add(stu,n);
n++;
print(stu,n);
if(del(stu,n))
n--;
print(stu,n);
sort(stu,n,1);
print(stu,n);
sort(stu,n,2);
print(stu,n);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: