基于new Bing和ChatGPT的回答:
#include <stdio.h>
#include <string.h>
// 职工数据结构
struct wkrs {
char name[20];
int id;
char gender[5];
int age;
};
// 职工简明数据结构
struct wkshort {
char name[20];
int age;
};
// 数据读入函数
void readin(struct wkrs *wkrs_arr, int n) {
for (int i = 0; i < n; i++) {
printf("Please input the name of worker %d: ", i+1);
scanf("%s", wkrs_arr[i].name);
printf("Please input the id of worker %d: ", i+1);
scanf("%d", &wkrs_arr[i].id);
printf("Please input the gender of worker %d: ", i+1);
scanf("%s", wkrs_arr[i].gender);
printf("Please input the age of worker %d: ", i+1);
scanf("%d", &wkrs_arr[i].age);
}
}
// 原始数据显示函数
void display(struct wkrs *wkrs_arr, int n) {
printf("Name\tID\tGender\tAge\n");
for (int i = 0; i < n; i++) {
printf("%s\t%d\t%s\t%d\n", wkrs_arr[i].name, wkrs_arr[i].id, wkrs_arr[i].gender, wkrs_arr[i].age);
}
}
// 简明数据制作函数
void srt(struct wkrs *wkrs_arr, struct wkshort *wkshort_arr, int n) {
for (int i = 0; i < n; i++) {
strcpy(wkshort_arr[i].name, wkrs_arr[i].name);
wkshort_arr[i].age = wkrs_arr[i].age;
}
}
// 简明数据删除函数
void delwk(struct wkshort *wkshort_arr, char *name, int n) {
int flag = 0; // 是否找到要删除的职工
for (int i = 0; i < n; i++) {
if (strcmp(wkshort_arr[i].name, name) == 0) {
for (int j = i; j < n-1; j++) {
strcpy(wkshort_arr[j].name, wkshort_arr[j+1].name);
wkshort_arr[j].age = wkshort_arr[j+1].age;
}
flag = 1;
break;
}
}
if (flag == 0) {
printf("No such worker found.\n");
} else {
printf("Worker %s deleted.\n", name);
}
}
int main() {
struct wkrs wkrs_arr[10];
struct wkshort wkshort_arr[10];
int choice, n = 10;
while (1) {
printf("Please Input 1-5:\n");
scanf("%d", &choice);
switch (choice) {
case 1:
readin(wkrs_arr, n);
break;
case 2:
display(wkrs_arr, n);
break;
case 3:
srt(wkrs_arr, wkshort_arr, n);
printf("Name\tAge\n");
for (int i = 0; i < n; i++) {
printf("%s\t%d\n", wkshort_arr[i].name, wkshort_arr[i].age);
}
break;
case 4:
printf("Please input the name of worker to be deleted: ");
char name[20];
scanf("%s", name);
delwk(wkshort_arr, name, n);
break;
case 5:
printf("Program exits.\n");
return 0;
default:
printf("Invalid choice. Please input again.\n");
}
}
return 0;
}
说明:降低全局变量耦合度。