c语言链表 int,c语言 链表基础

该博客介绍了一个C++程序,用于输入10个学生5门课程的成绩,实现计算每个学生的平均分、每门课程的平均分,并找出最高分对应的学生和课程。程序通过结构体存储学生信息,包括姓名、各科成绩,然后通过函数实现各项功能,如初始化学生信息、计算平均分和显示最高分等。
摘要由CSDN通过智能技术生成

*/输入10个学生5门课的成绩,分别用函数实现下列功能:

1>计算每个学生的平均分。

2>计算每门课的平均分。

3>找出所有50个分数中最高的分数所对应的学生和课程。/*

#include

#include

#include

#include

typedef struct Student

{

char name[10];

int math;

int english;

int chinese;

int Seril;

struct Student *pNext;

}Stu,*pStu;

void Init_Student(pStu pHead);

pStu Creat_Student()

{

int i = 0;

int num = 0;

pStu pM = NULL;

pStu pHead = (pStu)malloc(sizeof(Stu));

if(pHead==NULL)

{

printf("未能开辟空间!\n");

exit(-1);

}

printf("请输入你要输入学生信息的个数:");

scanf("%d",&num);

if (num 

{

printf("你没有要插入学生!\n");

exit(-1);

}

pM = pHead;

pHead->pNext = NULL;

for (i = 0; i 

{

pStu student = (pStu)malloc(sizeof(Stu));

pM->pNext= student;

student->pNext = NULL;

pM = student;

}

free(pM);

return pHead;

}

void Init_Student(pStu pHead)

{

int i = 1;

pStu phead = pHead;

printf("请依次输出学生信息(姓名\\语文成绩\\数学成绩\\英语成绩):\n");

while (1)

{

phead = phead->pNext;

printf("第%d个:\n",i);

scanf("%s", phead->name);

scanf("%d", &phead->chinese);

scanf("%d", &phead->math);

scanf("%d", &phead->english);

phead->Seril = i;

i++;

if (phead->pNext == NULL)

break;

}

free(phead);

}

void Count_Average(pStu pHead)

{

int avr_ch = 0;

int avr_en = 0;

int avr_ma = 0;

int avr_stu = 0;

int num = 1;

pStu phead = pHead;

while (1)

{

avr_stu = 0;

phead = phead->pNext;

avr_ch = avr_ch+phead->chinese;

avr_en = avr_en+phead->english;

avr_ma = avr_ma+phead->math;

avr_stu = avr_stu + phead->chinese + phead->english + phead->math;

printf("%s的所有成绩的平均分为:%d\n", phead->name, avr_stu / 3);

if (phead->pNext == NULL)

break;

num++;

}

printf("所有人语文成绩平均分为:%d\n", avr_ch / num);

printf("所有人数学成绩平均分为:%d\n", avr_ma / num);

printf("所有人英语成绩平均分为:%d\n", avr_en / num);

free(phead);

}

void Show_Hig_scr_stu(pStu pHead)

{

pStu phead = pHead->pNext;

int seril = 1;

int hig_scr1 = 0;

int hig_scr2 = 0;

while (1)

{

int high = 0;

if (phead->pNext == NULL)

break;

high = (phead->chinese >= phead->english ? phead->chinese : phead->english);

hig_scr1 = high >= phead->math ? high : phead->math;

high = (phead->pNext->chinese >= phead->pNext->english ? phead->pNext->chinese :

phead->pNext->english);

hig_scr2 = high >= phead->pNext->math ? high : phead->pNext->math;

if (hig_scr1 

{

seril = phead->pNext->Seril;

phead = phead->pNext;

if (phead->pNext == NULL)

break;

}

else

phead->pNext = phead->pNext->pNext;

}

phead = pHead->pNext;

while (1)

{

if (phead->Seril == seril)

{

if (phead->chinese>=phead->math&&phead->chinese>=phead->english)

printf("%s的语文成绩最高为:%d\n", phead->name, phead->chinese);

if (phead->chinese <= phead->math&&phead->math >= phead->english)

printf("%s的数学成绩最高为:%d\n", phead->name, phead->math);

if (phead->chinese <= phead->english&&phead->math <= phead->english)

printf("%s的英语成绩最高为:%d\n", phead->name, phead->english);

break;

}

phead = phead->pNext;

}

free(phead);

}

int main()

{

pStu phead = (pStu)malloc(sizeof(Stu));

phead = Creat_Student();

Init_Student(phead);

Count_Average( phead);

Show_Hig_scr_stu(phead);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值