完成一个小型成绩系统,C语言编程
发布网友
发布时间:2022-04-25 19:27
我来回答
共1个回答
热心网友
时间:2023-10-14 12:12
#include<stdio.h>
#include<string.h>
#define N 5//考试的科目数
#define M 50//全班的学生的数目
struct student
{
char name[20];
int score[N];
float aver;
}stu[M];
void Creat(student *stu)
{
int i,n,j;
char ch[2]="!";
printf("请输入需要输入的学生的个数:\n");
scanf("%d",&n);
printf("请依次输入学生的姓名和成绩:\n");
for(i=0;i<n;i++)
{
scanf("%s",stu[i].name);
float sum=0.0;
for(j=0;j<N;j++)
{
scanf("%d",&stu[i].score[j]);
sum=sum+stu[i].score[j];
}
stu[i].aver=sum/N;
}
*stu[i].name=*ch;
}
void show(student *stu)
{
int i=0;
while(*stu[i].name-33)
{
int j;
printf("%-10s",stu[i].name);
for( j=0;j<N;j++)
printf("%-4d",stu[i].score[j]);
printf("%.2f",stu[i].aver);
printf("\n");
i++;
}
}
int num(student *stu)
{
int i=0,k=0;
student s;
while(*stu[i].name-33)
{
k++;
i++;
}
return k;
}
void Sort(student *stu)
{
int i=0,k=0;
student s;
k=num(stu);
for(i=0;i<k-1;i++)
for(int j=0;j<k-1-i;j++)
{
if(stu[i].aver<stu[i+1].aver)
{
s=stu[i];
stu[i]=stu[i+1];
stu[i+1]=s;
}
}
}
void add(student *stu)
{
int i=0,k=0,n,j;
char ch[2]="!";
student s;
k=num(stu);
printf("请输入需要添加的学生的个数:\n");
scanf("%d",&n);
printf("请依次输入学生的姓名和成绩:\n");
for(i=k;i<n+k;i++)
{
scanf("%s",stu[i].name);
float sum=0.0;
for(j=0;j<N;j++)
{
scanf("%d",&stu[i].score[j]);
sum=sum+stu[i].score[j];
}
stu[i].aver=sum/N;
}
*stu[i].name=*ch;
}
void dele(student *stu)
{
int i=0,k=0,n=-1,j;
char name[20];
char ch[2]="!";
k=num(stu);
printf("请依次输入要删除的学生的姓名\n");
scanf("%s",name);
//////
/////
k=num(stu);
for(i=0;i<k;i++)
{
if(strcmp(name,stu[i].name)==0)
{
n=i;
break;
}
}
if(n==-1)
printf("没有改学生\n");
else
{
stu[n]=stu[k-1];
*stu[k-1].name=*ch;
}
}
void main()
{
int k;
char ch[2]="!";
Creat(stu);
//Sort(stu);
//show(stu);
//add(stu);
show(stu);
//printf("%d",k);
printf("\n");
dele(stu);
show(stu);
}