请用C语言代码实现:模拟商场会员积分兑换: 结构体类型定义如下: struct member{ char name[20]; char num[20]; int total; struct member *next; }; 要求实现如下功能: (1)建立链表:自定义函数建立单链表来存放会员的信息,如果输入大写‘Y’字符则继续创建结点存储会员信息,否则按任意键结束输入。 (2)积分兑换:自定义函数按照编号查找会员,并为这个会员兑换积分,5000分兑换10元,输入要兑换的积分数,输出兑换了多少元和剩余积分。如果没有找到,输出此会员不存在。 (3)写自定义函数释放链表所占内存。 (在主函数依次调用各函数即可) 输入输出如下: **创建节点提示:"请依次输入每个会员的编号、姓名、积分: \n" **输入节点数据格式:"%s %s %d" **是否继续创建提示:"是否继续输入,按Y键继续输入,其他键就结束.\n" **输入提示:"请输入要兑换积分的会员编号:\n" **输入格式:"%s" 如果没找到,输出"此会员不存在.\n" 找到了,完成兑换 **输入提示:"5000分兑换10元,你想兑换多少积分?\n" **输入格式:"%d" **输出格式:"你兑换了%d元,剩余积分为:%d\n" 程序运行示例1: 请依次输入每个会员的编号、姓名、积分: ↙ 1 zhang 30600 是否继续输入,按Y键继续输入,其他键就结束.↙ Y 请依次输入每个会员的编号、姓名、积分: ↙ 2 li 20008 是否继续输入,按Y键继续输入,其他键就结束.↙ Y 请依次输入每个会员的编号、姓名、积分: ↙ 3 fu 10000 是否继续输入,按Y键继续输入,其他键就结束.↙ n 请输入要兑换积分的会员编号:↙ 4 此会员不存在.↙
时间: 2024-03-10 16:50:33 浏览: 195
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct member{
char name[20];
char num[20];
int total;
struct member *next;
};
// 建立链表
struct member *createList() {
struct member *head, *p, *q;
char choice;
head = p = (struct member *)malloc(sizeof(struct member));
printf("请依次输入每个会员的编号、姓名、积分:\n");
scanf("%s%s%d", p->num, p->name, &p->total);
printf("是否继续输入,按Y键继续输入,其他键就结束.\n");
scanf(" %c", &choice);
while (choice == 'Y' || choice == 'y') {
q = (struct member *)malloc(sizeof(struct member));
printf("请依次输入每个会员的编号、姓名、积分:\n");
scanf("%s%s%d", q->num, q->name, &q->total);
p->next = q;
p = q;
printf("是否继续输入,按Y键继续输入,其他键就结束.\n");
scanf(" %c", &choice);
}
p->next = NULL;
return head;
}
// 积分兑换
void exchange(struct member *head) {
char num[20];
int score;
struct member *p = head;
printf("请输入要兑换积分的会员编号:\n");
scanf("%s", num);
while (p != NULL) {
if (strcmp(p->num, num) == 0) {
printf("5000分兑换10元,你想兑换多少积分?\n");
scanf("%d", &score);
if (score > p->total) {
printf("兑换失败,积分不足!\n");
} else {
int money = score / 500;
int remain = p->total - score;
printf("你兑换了%d元,剩余积分为:%d\n", money, remain);
p->total = remain;
}
return;
}
p = p->next;
}
printf("此会员不存在.\n");
}
// 释放链表内存
void freeList(struct member *head) {
struct member *p = head, *q;
while (p != NULL) {
q = p->next;
free(p);
p = q;
}
}
int main() {
struct member *head = createList();
exchange(head);
freeList(head);
return 0;
}
```
运行示例:
```
请依次输入每个会员的编号、姓名、积分:
1 zhang 30600
是否继续输入,按Y键继续输入,其他键就结束.
Y
请依次输入每个会员的编号、姓名、积分:
2 li 20008
是否继续输入,按Y键继续输入,其他键就结束.
Y
请依次输入每个会员的编号、姓名、积分:
3 fu 10000
是否继续输入,按Y键继续输入,其他键就结束.
n
请输入要兑换积分的会员编号:
4
此会员不存在.
```
阅读全文