请教:(C语言学生信息管理)程序函数里好像直接跳过了某一段代码执行

void Student_Searchself(STUDENT *head) //此函数是为了显示学生的各科成绩和各科排名 //(head)存储学生成绩的链表头指针
{
STUDENT *p,*m,*e,*y,*l;
STUDENT *p1,*p2,*p3,*p4;
char s[6];
system("cls");
printf("请输入本人学号来查找\n");
scanf("%s",s);
p=head;
e=head;
m=head;
y=head;
l=head;
p1=descending_order_by_Math(m); //得到按数学成绩排好序的成绩链表
p2=descending_order_by_English(e); //得到按英语成绩排好序的成绩链表
p3=descending_order_by_yuwen(y); //得到按语文成绩排好序的成绩链表
p4=descending_order_by_lizong(l); //得到按理综成绩排好序的成绩链表

//-------------分别在各个成绩排名链表中找到该学生位置即得到各科的排名-----------------
while(strcmp(p->ID,s)&& p != NULL)
{p=p->next;}
while(strcmp(p1->ID,s)&& p1!= NULL)
{p1=p1->next;}
while(strcmp(p2->ID,s) && p2!= NULL)
{p2=p2->next;}
while(strcmp(p3->ID,s) && p3!= NULL)
{p3=p3->next;}
while(strcmp(p4->ID,s) && p4!= NULL)
{p4=p4->next;}
//--------------------------------------------------------------------------
if(p!=NULL&&p1!=NULL&&p2!=NULL&&p3!=NULL&&p4!=NULL) //找到该学生
{

printf(" 学号为%s的学生信息\n\n",s);
printf("---------------------------------------------------------------------------\n");
printf("%-8s%-8s%-10s%-10s%-15s%-10s%-10s\n","学号","姓名","数学成绩","英语成绩","语文成绩","理综成绩","总成绩");
printf("%-8s%-8s%-10.2f%-10.2f%-15.2f%-10.2f%-10.2f\n",p->ID,p->Name,p->Math,p->English,p->yuwen,p->lizong,p->Sum);
printf("---------------------------------------------------------------------------\n");
printf("\n数学成绩排名:%d",p1->mingci);
printf("\n英语成绩排名:%d",p2->mingci);
printf("\n语文成绩排名:%d",p3->mingci);
printf("\n理综成绩排名:%d",p4->mingci);
printf("\n---------------------------------------------------------------------------\n");
}
else
{printf("\n没有该学生\n",s);}
}

实验的学生信息为:图片说明

运行到此函数模块的效果:图片说明

1个回答

实在是看不出这段子函数问题在哪,里面调用的函数都是正确可用的。结果运行有Bug。所以想请教下各位,是不是这个子函数里的程序逻辑有问题

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐