某个班的学生,每个学生的信息包括学号、姓名、3门课成绩。从键盘输入学生的数据,要求:按总成绩排名顺序打印所有学生的信息,包括每个学生学号、姓名、3门课成绩和平均成绩;找到每门课成绩最高的学生,打印其信息;找到平均分最高的学生打印其信息。(要求使用链表方式)
这是我编写的:
#include<stdio.h>
#include<malloc.h>
typedef struct student
{
intnum;
charname[20];
intscore;
structstudent *next;
}
ST,*STU;
STU createlink(int n)
{ int i;
STU p,q,head;
if(n<=0)
return(NULL);
head=(STU)malloc(sizeof(ST));
printf("input datas:\n");
scanf("%d %s%d",&head->num,head->name,&head->score);
p=head;
for(i=1;i<n;i++)
{
q=(STU)malloc(sizeof(ST));
scanf("%d %s%d",&q->num,q->name,&q->score);
p->next=q;
p=q;
}
p->next=NULL;
return (head);
}
void list(STU head)
{
STU p=head;
int i=0;
double sum=0;
for(;p!=NULL;p=p->next)
{
sum=sum+(double)(p->score);
i++;
}
p=head;
while(p!=NULL)
{ if((double)(p->score)>(sum/i))
printf("高于平均的学生为:%d %s%d\n",p->num,p->name,p->score);
p=p->next;
}
}
double average(STU head)
{int i=0;
double sum=0;
for(;head!=NULL;head=head->next)
{
sum=sum+(double)(head->score);
i++;
}
return (sum/i);
}
void main()
{ STU h;
int n;
double ave;
printf("input number of node:");
scanf("%d",&n);
h=createlink(n);
ave=average(h);
printf("平均成绩为:%lf\n",ave);
list(h);
}
运行了不对啊,哪位大神能帮我修改下啊!
谢谢!
这是我编写的:
#include<stdio.h>
#include<malloc.h>
typedef struct student
{
intnum;
charname[20];
intscore;
structstudent *next;
}
ST,*STU;
STU createlink(int n)
{ int i;
STU p,q,head;
if(n<=0)
return(NULL);
head=(STU)malloc(sizeof(ST));
printf("input datas:\n");
scanf("%d %s%d",&head->num,head->name,&head->score);
p=head;
for(i=1;i<n;i++)
{
q=(STU)malloc(sizeof(ST));
scanf("%d %s%d",&q->num,q->name,&q->score);
p->next=q;
p=q;
}
p->next=NULL;
return (head);
}
void list(STU head)
{
STU p=head;
int i=0;
double sum=0;
for(;p!=NULL;p=p->next)
{
sum=sum+(double)(p->score);
i++;
}
p=head;
while(p!=NULL)
{ if((double)(p->score)>(sum/i))
printf("高于平均的学生为:%d %s%d\n",p->num,p->name,p->score);
p=p->next;
}
}
double average(STU head)
{int i=0;
double sum=0;
for(;head!=NULL;head=head->next)
{
sum=sum+(double)(head->score);
i++;
}
return (sum/i);
}
void main()
{ STU h;
int n;
double ave;
printf("input number of node:");
scanf("%d",&n);
h=createlink(n);
ave=average(h);
printf("平均成绩为:%lf\n",ave);
list(h);
}
运行了不对啊,哪位大神能帮我修改下啊!
谢谢!