找错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 09:57:02 浏览: 108
在这段代码中,存在一个问题。在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");
}
```
修改后,只有在所有循环结束后都没有找到宿舍号对应的学生信息时,才会输出“未查询到该宿舍的学生信息!”这句话。
相关问题
回答这道题#include <stdio.h> #include <stdlib.h> #include <string.h> #include "sort.h" void InsertSort(SeqList &L) /*直接插入排序*/ { int i,j; for(i=2;i<=L.length;i++) // 请在这里补充代码,完成本关任务 /********** Begin *********/ /********** End **********/ } void SeqListInput(SeqList &L) /*输入若干记录的关键字,存放到顺序表L中*/ { int i=1; KeyType x; scanf("%d",&x); while(x!=-1) { L.r[i++].key=x; scanf("%d",&x); } L.length=i-1; } void SeqListOutput(SeqList L) /*输出顺序表L中各记录的关键字*/ { int i; for(i=1;i<=L.length;i++) printf("%d ",L.r[i].key); printf("\n"); }
这段代码是一段 C 语言程序,其中定义了三个函数,分别是 InsertSort、SeqListInput 和 SeqListOutput。这些函数都是用来对顺序表进行操作的。
InsertSort 函数是用来对顺序表进行直接插入排序的操作,具体实现是通过循环遍历顺序表中的元素,将当前元素插入到已排序的子序列中的正确位置。
SeqListInput 函数是用来输入若干记录的关键字,并将其存放到顺序表 L 中的操作。具体实现是通过循环读取输入的数字,并将其存储到顺序表 L 的关键字中,直到输入 -1 为止。
SeqListOutput 函数是用来输出顺序表 L 中各记录的关键字的操作。具体实现是通过循环遍历顺序表中的元素,并将其输出到屏幕上。
线性表的基本操作的实现: 1.顺序表的定义CreateList(SeqList *L,int n); 2.顺序表的打印PrintList(SeqList *L); 3.顺序表的查找LocateList(SeqList *L,int x); 4.顺序表的插入InsertList(SeqList *L,int x,int i); 5.顺序表的删除DeleteList(SeqList *L,int i);
好的,以下是 CSDN 开发的 C知道 对线性表基本操作的实现:
1. 顺序表的定义:
typedef struct {
int *elem; // 存储空间基址
int length; // 当前长度
int size; // 当前分配的存储容量
} SeqList;
void CreateList(SeqList *L, int n) {
L->elem = (int *)malloc(n * sizeof(int));
if (!L->elem) {
printf("Memory allocation failed.\n");
exit(1);
}
L->length = 0;
L->size = n;
}
2. 顺序表的打印:
void PrintList(SeqList *L) {
int i;
for (i = 0; i < L->length; i++) {
printf("%d ", L->elem[i]);
}
printf("\n");
}
3. 顺序表的查找:
int LocateList(SeqList *L, int x) {
int i;
for (i = 0; i < L->length; i++) {
if (L->elem[i] == x) {
return i;
}
}
return -1;
}
4. 顺序表的插入:
int InsertList(SeqList *L, int x, int i) {
int j;
if (i < 1 || i > L->length + 1) {
return 0;
}
if (L->length >= L->size) {
return 0;
}
for (j = L->length; j >= i; j--) {
L->elem[j] = L->elem[j - 1];
}
L->elem[i - 1] = x;
L->length++;
return 1;
}
5. 顺序表的删除:
int DeleteList(SeqList *L, int i) {
int j;
if (i < 1 || i > L->length) {
return 0;
}
for (j = i; j < L->length; j++) {
L->elem[j - 1] = L->elem[j];
}
L->length--;
return 1;
}
希望这些代码能够帮助你实现线性表的基本操作。
阅读全文