使用c语言写一子函数,实现动态建立链表,输入五个同学的信息:学号,姓名,三门课成绩,平均分
写一子函数,以上述链表作为实参,要求实现按照平均成绩从高到低输出五位同学的所有信息,并返回成绩最高的同学信息指针
在主函数中使用函数指针实现子函数的调用,并输出“成绩最高的学生姓名+is the best”。
建立输出学生姓名,学号,成绩,平均分的动态链表
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-link 2021-12-31 13:07关注
定义链表结构,然后逐个输入学生信息形成节点。遍历链表搜索最高分的学生信息
//写一子函数,以上述链表作为实参,要求实现按照平均成绩从高到低输出五位同学的所有信息,并返回成绩最高的同学信息指针 //在主函数中使用函数指针实现子函数的调用,并输出“成绩最高的学生姓名+is the best”。 #include <stdio.h> #include <stdlib.h> typedef struct _linknode { int num; char name[20]; int score[3]; float avg; struct _linknode *next; }linknode,*linklist; void creat(linklist head) { linklist q = head; linklist p = NULL;; int i=0; for(i=0;i<5;i++) { p = (linklist)malloc(sizeof(linknode)); scanf("%d%s%d%d%d",&p->num,p->name,&p->score[0],&p->score[1],&p->score[2]); p->avg = (p->score[0] + p->score[1]+p->score[1])/3.0; p->next = NULL; q->next = p; q = p; } } linklist LinkListSort(linklist head) { linklist p = head->next, pre, r = p->next; p->next = NULL; p = r; while (p) { r = p->next; pre = head; while (pre->next&&pre->next->avg > p->avg) pre = pre->next; p->next = pre->next; pre->next = p; p = r; } return head->next; } int main() { linklist head = (linklist)malloc(sizeof(linknode)); linklist p = NULL,h; head->next = NULL; creat(head); h = LinkListSort(head); p = head->next; while(p != NULL) { printf("%d\t%s\t%d\t%d\t%d\n",p->num,p->name,p->score[0],p->score[1],p->score[2]); p = p->next; } if(h!=NULL) printf("%s is the best",h->name); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
- ¥15 MCNP里如何定义多个源?
- ¥20 双层网络上信息-疾病传播
- ¥50 paddlepaddle pinn
- ¥20 idea运行测试代码报错问题
- ¥15 网络监控:网络故障告警通知
- ¥15 django项目运行报编码错误
- ¥15 请问这个是什么意思?
- ¥15 STM32驱动继电器
- ¥15 Windows server update services