📄 us3jf79.txt
字号:
#include<stdio.h>
#include<malloc.h>
#define m 4
#define NULL 0
typedef struct stnode
{
int id;
char name[16];
int subject[m];
float ave;
struct stnode *next;
}students;
students *head;
int n;
void order()
{
int j;
students *p,*q,*r,*h;
printf("请输入需排序的功课序号(1~~4):\n");
scanf("%d",&j);
q=head->next->next;
head->next->next=NULL;
p=q;
while(p)
{
q=q->next;
h=head;
r=h->next;
if(p->subject[j-1]>r->subject[j-1])
{
p->next=r;
h->next=p;
}
else
{
while((p->subject[j-1]>r->subject[j-1])&&r);
{
h=r;
r=r->next;
}
if(r)
{
p->next=r;
h->next=p;
h=p;
}
else
{
p->next=NULL;
h->next=p;
r=p;
}
}
p=q;
}
printf("所有学生功课 %d 的顺序是:\n",j);
p=head->next;
while(p)
{
printf("姓名:%s 成绩:%d\n",p->name,p->subject[j-1]);
p=p->next;
}
}
void average()
{
int i,j;
float sum,aver;
students *p;
printf("Subject Average result\n");
printf("*******Subject******Subject Average******\n");
for(i=0;i<m;i++)
{
j=0;
sum=0;
p=head->next;
while(p)
{
sum=sum+p->subject[i];
p=p->next;
j++;
}
aver=sum/j;
printf(" Subject %d %16.2f\n",i+1,aver);
}
printf("*****************************\n\n");
}
void nopass()
{
int i;
students *p;
p=head->next;
printf("NO Pass result\n");
printf("**********ID*********Name***********Subject****************Average***\n");
while(p)
{
i=0;
while(i<m)
{
if(p->subject[i]<60)
{
printf("%8d%10s",p->id,p->name);
for(i=0;i<m;i++)
printf("%6d",p->subject[i]);
printf("%8.2f\n",p->ave);
break;
}
else
i++;
}
p=p->next;
}
printf("*******************************************\n\n");
}
void over90()
{
students *p;
int k=0;
p=head->next;
while(p->next)
{
if(p->ave>=90.0)
{
printf("\n");
printf("average over 90 its id is %d\n",p->id);
p=p->next;
k=1;
}
else
p=p->next;
}if(!k)
printf("没有平均分超过90分的学生\n");
}
void main()
{
students *p,*q;
int i,j,select,flag=1;
float sum;
head=(students *)malloc(sizeof(students));
printf("please student num!\n");
scanf("%d",&n);
head->next=(students *)malloc(sizeof(students));
q=head->next;
for(i=0;i<n;i++)
{
printf("input student %d its ID,name\n",i+1);
p=q;
scanf("%d\n",&p->id);
scanf("%s",&p->name);
printf("\n");
printf("input student %i its score of 4 subject\n",i+1);
for(j=0;j<m;j++)
scanf("%d",&p->subject[j]);
q=(students *)malloc(sizeof(students));
q->next=NULL;
p->next=q;
}
p=head->next;
for(i=0;i<n-1;i++)
p=p->next;
p->next=NULL;
p=head->next;
while(p)
{
sum=0;
for(j=0;j<m;j++)
sum=sum+p->subject[j];
p->ave=sum/m;
p=p->next;
}
while(flag)
{
printf("********************************************\n");
printf("1----求每门课程的平均成绩\n");
printf("2----输出有课程不及格功的学生情况\n");
printf("3----输出个人平均分超过90分的学生学号\n");
printf("4----所有学生对指定课程排名\n");
printf("5----退出\n");
printf("\n");
printf("请选择(1-5):");
scanf("%d",&select);
switch(select)
{
case 1: average();break;
case 2: nopass();break;
case 3: over90();break;
case 4: order();break;
case 5: flag=0;break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -