c语言3个班级录成绩链表,c语言 利用结构体与链表实现:一个班3个学生,各学4门课,计算总平均分数,以及第n个学生的成绩。...

本文介绍了一个使用C++编写的程序,包括创建空链表、录入学生信息、输出学生详情、计算平均分及查找指定学生的成绩。通过实例演示了如何操作结构体和链表数据结构来管理学生数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

leezhezhe0

2014.01.20

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率: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分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值