满意答案
leezhezhe0
2014.01.20
采纳率:57% 等级:12
已帮助:13086人
#include<stdio.h>
#include<stdlib.h>
#define maxsize 3 //定义学生的个数
typedef struct
{
char name[20];
int score[4];
}student;
struct node
{
student s;
node *next;
};
typedef node *linklist;
/*建立一个空链表*/
void initlist(linklist &head)
{
head=NULL;
}
/*建立学生信息链表*/
void creastlist(linklist &head)
{
node *p;
head=NULL;
for(int i=0;i<maxsize;i++)
{
p=(node *)malloc(sizeof(node));
printf("请输入学生的姓名:\n");
scanf("%s",p->s.name);
printf("请依次输入4门学科成绩:\n");
scanf("%d%d%d%d",&p->s.score[0],&p->s.score[1],&p->s.score[2],&p->s.score[3]);
p->next=head;
head=p;
}
}
/*输出所有学生的信息*/
void print(linklist head)
{
linklist p;
p=head;
while(p!=NULL)
{
printf("姓名:%s",p->s.name);
printf("成绩依次为:%5d%5d%5d%5d",p->s.score[0],p->s.score[1],p->s.score[2],p->s.score[3]);
printf("\n");
p=p->next;
}
printf("\n");
}
/*计算各门学科的平均分*/
void pingjun(linklist head)
{
linklist p;
p=head;
float zong0=0,zong1=0,zong2=0,zong3=0;
for(int i=0;i<4;i++)
{
p=head;
while(p!=NULL)
{
zong0=zong0+p->s.score[i];
p=p->next;
}
printf("score[%d]的平均分是:%4.2f",i,zong0/maxsize);
zong0=0;zong1=0;zong2=0;zong3=0;
}
}
/*输出第n个学生的成绩*/
void printtt(linklist head,int n)
{
linklist p;
p=head;
int j=0;
while((p->next)&&(j<maxsize-n+1))
{
p=p->next;
++j;
}
printf("第%d个学生的成绩",n);
printf("成绩依次为:%5d%5d%5d%5d",p->s.score[0],p->s.score[1],p->s.score[2],p->s.score[3]);
}
int main()
{
int N;
node *head;
initlist(head);
creastlist(head);
print(head);
pingjun(head);
printf("请输入你要输出的第N个学生:");
scanf("%d",&N);
printtt(head,N);
return 0;
}
有什么不了解的可以问我 ^_^
00分享举报