C语言用队列实现银行取钱模拟
时间: 2024-01-21 07:11:17 浏览: 120
以下是使用C语言实现银行取钱模拟的队列代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int id; // 银行卡号
int money; // 余额
} Account;
typedef struct {
Account data[MAX_SIZE];
int front; // 队头
int rear; // 队尾
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
int isEmpty(Queue *q) {
return q->front == q->rear;
}
int isFull(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
void enqueue(Queue *q, Account account) {
if (isFull(q)) {
printf("队列已满,无法入队!\n");
return;
}
q->data[q->rear] = account;
q->rear = (q->rear + 1) % MAX_SIZE;
}
Account dequeue(Queue *q) {
if (isEmpty(q)) {
printf("队列为空,无法出队!\n");
exit(1);
}
Account account = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return account;
}
void display(Queue *q) {
if (isEmpty(q)) {
printf("队列为空!\n");
return;
}
printf("队列中的账户信息如下:\n");
for (int i = q->front; i != q->rear; i = (i + 1) % MAX_SIZE) {
printf("银行卡号:%d,余额:%d\n", q->data[i].id, q->data[i].money);
}
}
int main() {
Queue q;
initQueue(&q);
int choice;
do {
printf("------------------------\n");
printf("1. 新增账户\n");
printf("2. 取款\n");
printf("3. 显示队列中的账户信息\n");
printf("4. 退出\n");
printf("------------------------\n");
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1: {
Account account;
printf("请输入银行卡号:");
scanf("%d", &account.id);
printf("请输入余额:");
scanf("%d", &account.money);
enqueue(&q, account);
printf("账户添加成功!\n");
break;
}
case 2: {
if (isEmpty(&q)) {
printf("队列为空,无法取款!\n");
break;
}
Account account = dequeue(&q);
printf("银行卡号:%d,余额:%d\n", account.id, account.money);
printf("请输入取款金额:");
int amount;
scanf("%d", &amount);
if (account.money >= amount) {
account.money -= amount;
printf("取款成功,余额为:%d\n", account.money);
} else {
printf("余额不足,无法取款!\n");
}
break;
}
case 3: {
display(&q);
break;
}
case 4: {
printf("程序已退出!\n");
break;
}
default: {
printf("输入错误,请重新输入!\n");
break;
}
}
} while (choice != 4);
return 0;
}
```
该程序实现了以下功能:
1. 新增账户:输入银行卡号和余额,将账户信息入队。
2. 取款:从队列中取出账户信息,输入取款金额,如果余额足够则取款并输出余额,否则提示余额不足。
3. 显示队列中的账户信息:逐个输出队列中的账户信息。
4. 退出程序:结束程序的运行。
该程序使用队列来存储账户信息,实现了银行取款模拟的功能。
阅读全文