有没有能解答这个程序,急

img


求解答这道c语言程序题,用题目所给方式设计这个程序,本人对这个结构体不是很会

基于new Bing和ChatGPT的回答:

img


#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;
}