某学校的一个学生成绩管理系统中,学生的信息包括:身份证号(18位,可能包含字母),姓名(不超过15个字符),入学年份(整数),请C语言编程实现:

(1)定义一个结构体类型和一个可以存储1000学生信息的结构体数组
(2)编写读取单个学生信息的函数
(3)编写输出单个学生信息的函数,身份证号、姓名和入学年份可以换行或空格分隔
(4)编写将学生按身份证号从大到小排序的函数,要求采用数组的冒泡排序算法实现
(5)编写查找是否存在某个身份证号的学生的函数,假设数组已经从大到小排序,要求使用二分查找法实现