C语言对学生的成绩进行排序问题求助!!!急!
发布网友
发布时间:2023-07-09 14:50
我来回答
共1个回答
热心网友
时间:2024-10-31 02:02
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define AVE(s1,s2,s3) (((s1)+(s2)+(s3))/3.0)
typedef struct student
{
int no,s1,s2,s3,n;
float ave;
char c1[20];
} student;
void logo();
int acc();
void main()
{
printf("录入成绩(输入空格停止录入):\n");
acc();
system("pause");
}
void logo()
{
int i;
for(i=0; i<5; i++)
printf(" *--*\n");
for(i=5; i<7; i++)
printf(" * * * * * *\n");
}
int acc()
{
int n=0;
student stu[100],t;
int i,j;
char a=0,b=0;
do
{
printf("请输入序号:");//录入成绩
scanf("%d",&stu[n].no);
printf("姓名:");
scanf("%s",stu[n].c1);
printf("高等数学:");
scanf("%d",&stu[n].s1);
printf("大学英语:");
scanf("%d",&stu[n].s2);
printf("大学物理:");
scanf("%d",&stu[n].s3);
stu[n].ave=AVE(stu[n].s1, stu[n].s2, stu[n].s3);
printf("三门课程平均成绩:ave=%f\n",stu[n].ave);
if(stu[n].ave>100)
printf("error!\n");
a=getchar();
n++;
}
while(a!=' ');
printf("结束录入\n");
printf("是否对高数成绩进行排序:Y/N\n");
scanf(" %c",&b);
if(b=='Y'||b=='Y'+32)
{
for(i=0; i<n; i++)
for(j=0; j<n-i; j++)
if(stu[j].s1<stu[j+1].s1)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
printf("高数成绩由高到低:\n");
printf("序号\t姓名\t高等数学\t大学英语\t大学物理\t平均成绩\n");
for(i=0; i<n; i++)
printf("%d\t%s\t%d\t%d\t%d\t%f\n",
stu[i].no,stu[i].c1,stu[i].s1,stu[i].s2,stu[i].s3,stu[i].ave);
return 0;
}