C语言考核题

链表A,每个节点存放一个新的链表B1,B2,B3,B4,B5的头结点。
场景:一个年级,相当链表A,该年级5个班,每个班5个人,相当于链表B1–B5
做一个学生成绩管理系统学生成绩有语文 数学 英语
功能: 录入成绩 找出三科总分的最高分 最低分 算出平均分

#include<stdio.h>
#include<stdlib.h>

struct stu{
	int chinese;
	int math;
	int english;
	int num;
	struct stu *next;
};

struct class{
	struct stu *head;
	struct class *next;
};

struct stu *head=NULL;
struct class *chead=NULL;

struct stu* addstu(struct stu *new)
{
	struct stu *p=head;
	if(p==NULL){
		head=new;
		return head;
	}
	while(p->next!=NULL){
		p=p->next;
	}
	p->next=new;
	return head;
}

struct stu*  initstu()
{	
	int i;
	for(i=0;i<2;i++){
		struct stu *new=(struct stu *)malloc(sizeof(struct stu));
		printf("input %d chinese,math,english,num\n",i);
		scanf("%d%d%d%d",&(new->chinese),&(new->math),&(new->english),&(new->num));
		new->next=NULL;
		head=addstu(new);
	}
	return head;
}

void print()
{
	int i;
	int j;
	struct stu *p=head;
	struct class *p2=chead;
	for(i=0;i<2;i++){
		for(j=0;j<2;j++){
			printf("chinese=%d,math=%d,english=%d,num=%d\n",p->chinese,p->math,p->english,p->num);
			printf("sum=%d\n",(p->chinese)+(p->math)+(p->english));
			p=p->next;
		}
		p2=p2->next;
	}
}

struct class* addc(struct class *new)
{
	struct class *p=chead;
	while(chead==NULL){
		chead=new;
		return chead;
	}
	while(p->next!=NULL){
		p=p->next;
	}
	p->next=new;
	return chead;
}

struct class* initclass()
{
	int i;
	for(i=0;i<2;i++){
		struct class *new;
		new=(struct class *)malloc(sizeof(struct class));
		new->head=initstu();
		new->next=NULL;
		chead=addc(new);
	}
	return chead;
}

void max()
{
	int max;
	struct stu *p=head;
	struct class *p1=chead;
	max=((p->chinese)+(p->math)+(p->english));
	while(p1!=NULL){
		while(p!=NULL){
			if(max<((p->chinese)+(p->math)+(p->english))){
				max=((p->chinese)+(p->math)+(p->english));
			}
			p=p->next;
		}
		p1=p1->next;
	}
	printf("max=%d\n",max);
}

void min()
{
	int min;
	struct stu *p=head;
	struct class *p1=chead;
	min=((p->chinese)+(p->math)+(p->english));
	while(p1!=NULL){
		while(p!=NULL){
			if(min>((p->chinese)+(p->math)+(p->english))){
				min=((p->chinese)+(p->math)+(p->english));
			}
			p=p->next;
		}
		p1=p1->next;
	}
	printf("min=%d\n",min);
}


void average()
{
	int sum=0;;
	struct stu *p=head;
	struct class *p1=chead;
	while(p1!=NULL){
		while(p!=NULL){
			sum+=((p->chinese)+(p->math)+(p->english));
			p=p->next;
		}
		p1=p1->next;
	}
	printf("average=%lf\n",(float)sum/4);
}

int main()
{
	initclass();
	printf("--------------------------------------\n");
	print();
	printf("--------------------------------------\n");
	max();
	printf("--------------------------------------\n");
	min();
	printf("--------------------------------------\n");
	average();
	printf("--------------------------------------\n");
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若木空灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值