#include <stdio.h>\n#include <stdlib.h>\n\n// 人名枚举类型\ntypedef enum {\n Alice, \n Bob, \n Charlie, \n David, \n Emily, \n Frank\n} Name; \n\n// 结构体\ntypedef struct {\n Name name; \n float amount; \n int index; \n} Person; \n\n// 结构体数组\nPerson people[100]; \nint count = 0; \n\n// 根据人名查找结构体指针\nPerson* findPersonByName(Name name) {\n for (int i = 0; i < count; i++) {\n if (people[i].name == name) {\n return &people[i]; \n } \n } \n return NULL; \n}\n\n// 根据序号查找结构体指针\nPerson* findPersonByIndex(int index) {\n if (index < 0 || index >= count) {\n return NULL; \n } \n return &people[index]; \n}\n\n// 增加内容\nvoid addPerson(Name name, float amount, int index) {\n // 如果index大于当前count,则直接将新元素加到数组末尾\n if (index >= count) {\n people[count].name = name; \n people[count].amount = amount; \n people[count].index = count; \n count++; \n return; \n } \n \n // 将index后面的元素向后移动,腾出位置给新元素\n for (int i = count - 1; i >= index; i--) {\n people[i + 1] = people[i]; \n people[i + 1].index = i + 1; \n } \n \n // 插入新元素\n people[index].name = name; \n people[index].amount = amount; \n people[index].index = index; \n count++; \n}\n\n// 删除内容\nvoid deletePerson(int index) {\n // 将index后面的元素向前移动,覆盖被删除的元素\n for (int i = index + 1; i < count; i++) {\n people[i - 1] = people[i]; \n people[i - 1].index = i - 1; \n } \n count--; \n}\n\n// 根据金额进行排序\nvoid sortPeopleByAmount() {\n // 使用冒泡排序法\n for (int i = 0; i < count - 1; i++) {\n for (int j = 0; j < count - i - 1; j++) {\n if (people[j].amount > people[j + 1].amount) {\n // 交换位置\n Person temp = people[j]; \n people[j] = people[j + 1]; \n people[j + 1] = temp; \n // 更新序号\n people[j].index = j; \n people[j + 1].index = j + 1; \n } \n } \n } \n}\n\nint main() {\n // 添加几个示例人员\n addPerson(Alice, 100.0, 0); \n addPerson(Bob, 200.0, 1); \n addPerson(Charlie, 150.0, 2); \n \n // 查找并打印某个人的信息\n Person* person = findPersonByName(Bob); \n if (person != NULL) {\n printf("Name: %d, Amount: %.2f, Index: %d\n", person->name, person->amount, person->index); \n } \n \n // 删除一个人的信息\n deletePerson(1); \n \n // 根据金额排序并打印所有人的信息\n sortPeopleByAmount(); \n for (int i = 0; i < count; i++) {\n printf("Name: %d, Amount: %.2f, Index: %d\n", people[i].name, people[i].amount, people[i].index); \n } \n \n return 0; \n}


原文地址: https://www.cveoy.top/t/topic/p3YE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录