算法笔记3.2~3.4的内容分别是查找元素,图形输出,日期处理,进制转换
题目列表:
3.2:
- B1041
- B1004
- B1028
- B1032
- A1011
- A1006
- A1036
3.3:
- B1036
- B1027
- A1031
3.4:PAT在此处没有题目
3.5:
- B1022
- B1037
- A1019
- A1027
- A1058
这几个部分还是属于简单模拟的内容,不涉及算法。
一般来说,使用结构体就能解决大部分问题,有个有意思的点是在处理形如“John 2001/05/12”这样的数据时,可以用
scanf("%c %d/%d/%d",&name,&year,&month,&day)
这样的格式来处理。
在有的题目中,比如B1028和A1036,需要有一个结构体变量作为比较基准,这个基准是需要初始化的,写好了初始化函数之后不要忘记在主函数中使用(很尴尬,有个题因为少了一句Init()卡了很久)
在查找元素这个小节中,核心的操作是比较和记录,比较出MAX或MIN,或者进行排序,然后再输出,这个时候思考边界条件和比较基准非常重要,比如在A1036的百分制考试中,我们初始化了一个100分的男生成绩,一个0分的女生成绩作为比较基准,使得算法能够顺利的进入初次循环
在图形输出这个小节,关键在于找到图形变化的数学规律,给出数学公式再转换为代码,复现代码的过程不困难,难点是找出数学规律给出公式
进制转换的题目,复习了一波进制转换的除K取余法,对于10以上进制,怎么方便的输出字母,可以用A1027中的方法,采用数组做一一对应,A1058要注意结果大小溢出int范围的可能性,使用long long类型来避免这个问题