今天开始参与一下打卡计划,今天的题目不是很难,其实就是一个简单的模拟题。但是因为最近在实习,最大的改进就是编码
【4.1日每日一题打卡】——奖学金
🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
⏳全文大约阅读时间: 20min
全文目录
☘前言☘
📑写在最后
P1093 [NOIP2007 普及组] 奖学金
解题思路
直接使用内置的排序函数,写好排序算法就好了。但是一定要注意代码规范,相应的传参一定要规范!!
#include <stdio.h> #include <stdlib.h> typedef struct{ int id, c, m, e, total; }Score; Score score[300]; int cmp(const void * a, const void *b){//固定函数定义 Score *p = (Score *)a, *q =(Score *) b;//强转 if(p->total != q->total) //对比总分 return p->total > q->total ? -1: 1;//-1就是不变 1就是调整顺序就是反序 if(p->c != q->c) //对比语文成绩 return p->c > q->c ? -1: 1; return p->id < q->id ? -1: 1;//对比id号 这里是小的在前面 } int main(){ int n; scanf("%d",&n); for(int i = 0;i < n;++i){ scanf("%d %d %d", &score[i].c, &score[i].m, &score[i].e); score[i].total = score[i].c + score[i].m + score[i].e; score[i].id = i+1; } qsort(score, n, sizeof(Score),cmp); for(int i = 0;i < 5;i++) printf("%d %d\n", score[i].id, score[i].total); return 0; }
📑写在最后
一个新的开始吧,希望可以跟着执梗大佬一起走到最后。