11.24

4.输入n(n<=20)名职工的姓名(姓名的长度小于10)及计算机水平考试成绩,输出及格人数和及格的职工姓名。(期末真题)

【设计要求】

(1)定义职工结构体类型struct Staff

(2)定义输入函数void input(struct Staff work[], int n)完成职工信息的输入,各输入信息间以空格为间隔。

(3)定义输出函数void print(struct Staff work[], int n)完成程序的输出,输出姓名以空格为间隔。

(4)main()要校验输入职工数量N是否符合要求,不符合要求则重新输入。

【输入输出样例】

请输入职工数量:4

请输入4位职工的姓名和成绩:aaa 88 bbb 56 ccc 75 ddd 45

共2位职工成绩合格,合格职工名单: aaa ccc

程序代码:

#include <stdio.h>

#include <string.h>

 

#define MAX_SIZE 20

#define PASS_SCORE 60

 

struct Staff {

    char name[10];

    int score;

};

 

void input(struct Staff work[], int n) {

    for (int i = 0; i < n; i++) {

        scanf("%s %d", work[i].name, &work[i].score);

    }

}

 

void print(struct Staff work[], int n) {

    int passCount = 0;

    printf("合格职工名单: ");

    for (int i = 0; i < n; i++) {

        if (work[i].score >= PASS_SCORE) {

            printf("%s ", work[i].name);

            passCount++;

        }

    }

    printf("\n共%d位职工成绩合格\n", passCount);

}

 

int main() {

    int n;

    printf("请输入职工数量: ");

    scanf("%d", &n);

 

    if (n <= 0 || n > MAX_SIZE) {

        printf("职工数量不符合要求,请重新输入\n");

        return 0;

    }

 

    struct Staff work[MAX_SIZE];

 

    printf("请输入%d位职工的姓名和成绩: ", n);

    input(work, n);

 

    print(work, n);

 

    return 0;

}

 

posted @ 2023-12-17 17:21  刘梦磊  阅读(18)  评论(0)    收藏  举报