本文较适合新手阅读;作者本人编程小白一枚,谨以此文,记录学习所得;如有纰漏或有更优方案,欢迎各路大佬指正!
用户输入国家名称及金牌、银牌、铜牌数量;
输出各个国家的排名及奖牌数目信息。
这里采用的方案是:
(1)创建一个结构体,存储各种奖牌数量和国家名称信息
(2)利用冒泡排序算法,判断交换的条件是:
arr[i]金<arr[i+1]金 ||
arr[i]金 == arr[i+1]金 && arr[i]银<arr[i+1]银 ||
arr[i]金 == arr[i+1]金 && arr[i]银 == arr[i+1]银 arr[i]铜<arr[i+1]铜
满足上面三个条件任意一个,即进行交换。
意识到了这一点的话,整个问题瞬间简单很多。
此部分非源码内容,只是添加一些辅助理解的知识。
4.1结构体的定义方式
代码注释里详细说明了常用的两种定义方式的区别,也推荐使用typedef的形式定义。
4.2封装的概念
这里以函数封装进行说明:函数封装就是将一段代码写在一个函数中,这样在main主函数中就不用写完整的程序代码了,直接调用该函数就能够实现对应的功能。
封装相当于提供了一个接口,用户只需要输入函数的形参,即可使用相应的函数,这样做可以保护函数的底层代码。
除此以外,例如在c++中,可以面向对象编程,其中的类封装,将多个成员函数封装在一个类中,这样可以进一步增加代码的可读性,便于管理。
4.3结构体指针
4.4结构体/结构体数组中两元素信息的交换
这里介绍了三种方法,其中第一种方法最好理解,就和一般的整型变量交换类似;后两种涉及结构体指针,稍微复杂一点。
源码中有详细注释说明。