。Р?采用先输入一组信息,应用scanf输入能有效阻止函数判断值的位置占用,采用while利用输入的信息都是非“#“,用“#”作为信息结束的判断语言。如果没有输入“#”,则继续,并且i++。Р?Р结束Р开始Рi++Р结束Р打开文件Р打开成功?Р输入学生学号Р输入学生姓名Р输入各科成绩Рex1[i].num[0]!='#'&&ex1[i].name[0]!='#'Р真Р假Р图2.1.3: 输入流程图Р2.分析成绩统计的算法:成绩统计分为三大项和退出部分,按学号正向排序,按平均成绩逆向排序,打印各个分数段的人数。利用switch方法使分支明确化。Р2.1分析按学号排序模块的算法:双重循环排序。Р从学生基本信息.txt中读取信息,进行比较,假设第一个学生的学号是最小的,和之后的所有人进行比较,如果有比他学号还小的,将两个进行对调。Р打开文件Р打开成功?Р结束Р开始Рi=1, j=i+1Рi<n-1Рstrcmp(ex2[i].num,ex2[j].num)>0Рtemp=ex2[i]; ex2[i]=ex2[j]; Рex2[j]=temp;Р结束程序并存档Рj<nРj++Р真Р结束循环Р假Рi++Р图2.2.1:按学号排序流程图Р2.2,按平均成绩排序:先算每个人的平均成绩,存放,调用,双重循环排序;利用新定义的数组将成绩平均计算,依次排序,将学生成绩按平均成绩按降序排序。Р开始Р打开文件Р结束Р按成绩排序Р读取文件信息Р成绩排序Рi=0Рi++Рi<nР退出循环Р计算平均成绩Р真Р假Рi=0Рi++Рi<n-1Р真Р假Рj<nРj=iРJ平均>i平均Р交换位置Р真Р真Рj++Р结束循环Р假Р结束程序存档Р图2.2.2:按平均成绩排序Р2.3,统计各分数段人数并打印:定义二维数组,将各科成绩转化成5个空间的成绩数组,双重循环,将各个成绩段的人数各次相加,得到最后结果;(如下图)