【C语言】链表:学生信息的输入与输出,并输出他们成绩的平均值
描述:有若干个学生的信息,包括学号、姓名、C语言成绩。其中,学号由11-15位数字组成;姓名为不超过50个字符的字符串、中间不含空格;C语言成绩为一个整数。
建立链表,依次存放每个学生的信息,再依次输出每个学生的信息,并输出他们成绩的平均值。
#include<stdio.h>
#include<stdlib.h>
struct app
{
double xuehao,chengji;
char xingming[50];
struct app *next;
};
#define size sizeof(struct app)
int main()
{
struct app *head=NULL,*p1,*p2;
double s,a,ss,sss;
p1=p2=(struct app*)malloc(size);
while(scanf("%lf",&p1->xuehao)!=EOF)
{
a=s=0;
scanf("%s",&p1->xingming);
scanf("%lf",&p1->chengji);
while(p1->xuehao!=0)
{
if(head==NULL)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct app*)malloc(size);
a++;
scanf("%lf",&p1->xuehao);
if(p1->xuehao==0){
scanf("%lf %lf",&ss,&sss);
break;
}
scanf("%s",&p1->xingming);
scanf("%lf",&p1->chengji);
}
p2->next=NULL;
while(head!=NULL)
{
printf("%.0f %s %.0f\n",head->xuehao,head->xingming,head->chengji);
s=s+head->chengji;
head=head->next;
}
printf("%.2f\n",s/a);
}
}
运行结果