请用c语言帮我修改以下代码void OnCustomerArrive(void *para) { printf("请输入窗口类型(A==个人现金业务,B==个人其他业务,C==对公现金业务,D==对公其他业务):"); char v; scanf(" %c", &v); // 加一个空格,避免读入上一次的回车 getchar(); // 把读入的回车从缓冲区去掉 if (v < 'A' || v > 'D') { printf("输入错误"); return; } WList p = Wlist; WList min = NULL; int start = 1; while (p != NULL) { if (!p->data.status && p->data.type == (v - 'A') && p->data.queue.length != MAX_QUEUE_NUM) { if (start) { min = p; start = 0; } if (min->data.queue.length > p->data.queue.length) { min = p; } } p = p->next; } if (min == NULL) { printf("业务还未添加"); return; } int customer = EnQueue(&min->data.queue); SqQueue q = min->data.queue; printf("请您到窗口编号 %d 区域等待,您的取号为%c%d-%02d,您前面有 %d 人正在排队", min->data.windowId, v, min->data.windowId, q.base[customer], q.length-1); }
时间: 2024-04-26 20:21:51 浏览: 82
void OnCustomerArrive(void *para) {
printf("请输入窗口类型(A==个人现金业务,B==个人其他业务,C==对公现金业务,D==对公其他业务):");
char v;
scanf(" %c", &v); // 加一个空格,避免读入上一次的回车
getchar(); // 把读入的回车从缓冲区去掉
if (v < 'A' || v > 'D') {
printf("输入错误");
return;
}
WList p = Wlist;
WList min = NULL;
int start = 1;
while (p != NULL) {
if (!p->data.status && p->data.type == (v - 'A') && p->data.queue.length != MAX_QUEUE_NUM) {
if (start) {
min = p;
start = 0;
}
else if (min->data.queue.length > p->data.queue.length) { // 修改此处,使用 else if 避免出错
min = p;
}
}
p = p->next;
}
if (min == NULL) {
printf("业务还未添加");
return;
}
int customer = EnQueue(&min->data.queue);
SqQueue q = min->data.queue;
printf("请您到窗口编号 %d 区域等待,您的取号为%c%d-%02d,您前面有 %d 人正在排队", min->data.windowId, v, min->data.windowId, q.base[customer], q.length-1);
}
主要修改的地方是在 while 循环中,修改了两个地方:
1. 在找到第一个合适的窗口后,需要将 start 设置为 0,避免后续窗口无法被比较;
2. 在比较队列长度时,使用 else if 避免出错。
阅读全文