找错void LocateList(SeqList *L,KeyType *ssh)//按宿舍号查询 { int i; for(i=1;i<=L->length;i++) { if(L->data[i].no==(int)ssh) { printf("输出%d宿舍的学生信息\n学号 姓名 性别 班级 宿舍号\n",L->data[i].no); printf("%s %-6s %-6s %-6s %-6d\n",L->data[i].num,L->data[i].name,L->data[i].sex ,L->data[i].cla,L->data[i].no); } else printf("未查询到该宿舍的学生信息!\n");} }
时间: 2024-02-22 10:57:02 浏览: 103
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
在这段代码中,存在一个问题。在for循环中,每次循环结束后都会输出“未查询到该宿舍的学生信息!”这句话,而不是在所有循环结束后再输出。
修改后的代码如下:
```
void LocateList(SeqList *L, KeyType *ssh) //按宿舍号查询
{
int i;
int flag = 0; //设置标志位,表示是否找到宿舍号对应的学生信息
for (i = 1; i <= L->length; i++)
{
if (L->data[i].no == (int)ssh)
{
flag = 1; //找到了宿舍号对应的学生信息,将标志位设为1
printf("输出%d宿舍的学生信息\n学号 姓名 性别 班级 宿舍号\n", L->data[i].no);
printf("%s %-6s %-6s %-6s %-6d\n", L->data[i].num, L->data[i].name, L->data[i].sex, L->data[i].cla, L->data[i].no);
}
}
if (flag == 0)
printf("未查询到该宿舍的学生信息!\n");
}
```
修改后,只有在所有循环结束后都没有找到宿舍号对应的学生信息时,才会输出“未查询到该宿舍的学生信息!”这句话。
阅读全文