```c
//学号查找
void xuehao(SqList &s,char key[]){
int count=0;
for(int i=0;i<s.length;i++){
s.elem[i].averscore=(s.elem[i].computerscore+s.elem[i].englishscore+s.elem[i].mathscore)/3;
}
for ( int i = 0; i < s.length; i++)
{//是否匹配
if (strcmp(s.elem[i].number,key) == 0)
{
printf("第%d个学生:\n学号:%s\n姓名:%s\n数学成绩:%.1lf\n英语成绩:%.1lf\n计算机成绩:%.1lf\n平均分:%.1lf\n",
i+1,s.elem[i].number,s.elem[i].name,s.elem[i].mathscore,
s.elem[i].englishscore, s.elem[i].computerscore, s.elem[i].averscore);
count=1;
}
}
if(count==0){
printf("查找的学生不存在\n");
}
}
//姓名查找
void xingming(SqList &s,char ch[]){
int flag=0,count;
char num[20];
for(int i=0;i<s.length;i++){
s.elem[i].averscore=(s.elem[i].computerscore+s.elem[i].englishscore+s.elem[i].mathscore)/3;
}
for ( int i = 0; i < s.length; i++)
{
if (strcmp(s.elem[i].name,ch) == 0)
{
flag = flag+1;
count=i;
}
}
//避免重名,学号不会重复
if(flag>1){
printf("出现重名,请输入待查找同学学号:\n");
scanf("%s",&num);
xuehao(s,num);
}
else if(flag==1){
printf("第%d个学生:\n学号:%s\n姓名:%s\n数学成绩:%.1lf\n英语成绩:%.1lf\n计算机成绩:%.1lf\n平均分:%.1lf\n",
count+1,s.elem[count].number,s.elem[count].name,s.elem[count].mathscore,
s.elem[count].englishscore, s.elem[count].computerscore, s.elem[count].averscore);
}
else{
printf("查找的学生不存在!\n");
}
}
int main()
{
SqList sq;
InitList(&sq);
luru(sq);
FILE *fp = fopen("input.txt","w");
shuchu(sq,fp);
FILE *fp11 = fopen("数学成绩排序.dat","w");
mathsort(sq,fp11);
FILE *fp12=fopen("英语成绩排序.dat","w");
englishsort(sq,fp12);
FILE *fp13=fopen("计算机成绩排序.dat","w");
computersort(sq,fp13);
FILE *fp2=fopen("平均成绩排序.dat","w");
average(sq,fp2);
fenxi(sq);
char key[100];
scanf("%s",key);
xuehao(sq,key);
char ch[100];
scanf("%s",ch);
xingming(sq,ch);
}
```