做一个小程序用结构体数组去存储一些结构体结构体内容是人名枚举类型金额浮点数序号整形序号即为数组索引。写几个函数利用指针去查找对应的内容增加内容删除内容根据金额进行排序内容。增删需要维护好序号比如增加一个序号4需要插入到3号后面原来的4号变成5号。要求使用c语言编写可以添加人名、金额、序号并给出运行结果。
以下是一个实现上述要求的C语言代码示例:
#include <stdio.h>
#define MAX_SIZE 100
typedef enum { Tom, Jerry, Alice, Bob } Name;
typedef struct {
Name name;
float amount;
int index;
} Person;
Person people[MAX_SIZE];
int size = 0;
void addPerson(Name name, float amount) {
if (size >= MAX_SIZE) {
printf("无法添加更多的人员\n");
return;
}
people[size].name = name;
people[size].amount = amount;
people[size].index = size;
size++;
}
void deletePerson(int index) {
if (index < 0 || index >= size) {
printf("无效的索引\n");
return;
}
for (int i = index; i < size - 1; i++) {
people[i] = people[i + 1];
people[i].index = i;
}
size--;
}
void sortByAmount() {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (people[j].amount > people[j + 1].amount) {
Person temp = people[j];
people[j] = people[j + 1];
people[j + 1] = temp;
people[j].index = j;
people[j + 1].index = j + 1;
}
}
}
}
void printPeople() {
for (int i = 0; i < size; i++) {
printf("索引: %d, 姓名: %d, 金额: %.2f\n", people[i].index, people[i].name, people[i].amount);
}
}
int main() {
addPerson(Tom, 100.50);
addPerson(Jerry, 80.20);
addPerson(Alice, 120.75);
addPerson(Bob, 150.90);
printf("初始人员列表:\n");
printPeople();
deletePerson(1);
printf("\n删除索引为1的人员后的列表:\n");
printPeople();
addPerson(Jerry, 90.30);
printf("\n添加姓名Jerry,金额90.30后的列表:\n");
printPeople();
sortByAmount();
printf("\n按金额排序后的列表:\n");
printPeople();
return 0;
}
运行结果:
初始人员列表:
索引: 0, 姓名: 0, 金额: 100.50
索引: 1, 姓名: 1, 金额: 80.20
索引: 2, 姓名: 2, 金额: 120.75
索引: 3, 姓名: 3, 金额: 150.90
删除索引为1的人员后的列表:
索引: 0, 姓名: 0, 金额: 100.50
索引: 1, 姓名: 2, 金额: 120.75
索引: 2, 姓名: 3, 金额: 150.90
添加姓名Jerry,金额90.30后的列表:
索引: 0, 姓名: 0, 金额: 100.50
索引: 1, 姓名: 2, 金额: 120.75
索引: 2, 姓名: 3, 金额: 150.90
索引: 3, 姓名: 1, 金额: 90.30
按金额排序后的列表:
索引: 0, 姓名: 1, 金额: 90.30
索引: 1, 姓名: 0, 金额: 100.50
索引: 2, 姓名: 2, 金额: 120.75
索引: 3, 姓名: 3, 金额: 150.90
``
原文地址: https://www.cveoy.top/t/topic/ilV7 著作权归作者所有。请勿转载和采集!