【描述】 某学生社团要收集新入社成员的成绩信息。每个成员的成绩有两种表示方式:等级制,用best、good、poor三种等级来表示;百分制,直接用分数来表示。输入成员的成绩信息,统计有多少人是用等级来表示成绩的,用分数来表示成绩的成员的平均分是多少(取整就行)。成绩用联合来表示,成绩信息用结构来表示。 【输入】 第一行一个正整数n(n≤10),表示人数成员。 下面n行,每行一个字符和一个字符串,其间以空格间隔。字符表示成绩类型,有C和N两种分别表示等级制和百分制;字符串表示成绩信息。 【输出】 一行中输出两个整数,其间以空格间隔,分别表示用等级来表示成绩的人数和用分数表示成绩的成员的平均分。 【输入示例】 5 C best C good N 90 C poor N 98 【输出示例】 3 94
时间: 2024-02-12 10:02:45 浏览: 81
Python学生信息管理系统设计与实现.zip(论文+项目源码+使用说明书)
5星 · 资源好评率100%
以下是一个可能的C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 定义成绩联合体
typedef union {
char level[10];
int score;
} Grade;
// 定义成绩信息结构体
typedef struct {
char type;
Grade grade;
} Score;
int main() {
int n, count = 0, sum = 0;
scanf("%d", &n);
// 循环读入成员的成绩信息
for (int i = 0; i < n; i++) {
Score score;
scanf(" %c", &score.type);
if (score.type == 'C') {
scanf("%s", score.grade.level);
if (strcmp(score.grade.level, "best") == 0 ||
strcmp(score.grade.level, "good") == 0 ||
strcmp(score.grade.level, "poor") == 0) {
count++; // 统计等级制成绩的人数
}
} else if (score.type == 'N') {
scanf("%d", &score.grade.score);
sum += score.grade.score; // 累加分数制成绩的总分
}
}
// 输出等级制成绩的人数和分数制成绩的平均分
printf("%d %d\n", count, sum / (n - count));
return 0;
}
```
代码中定义了一个成绩联合体,它可以存储等级制成绩或分数制成绩,具体由成绩信息结构体中的type字段来指示。在循环读入成员的成绩信息时,根据type字段的值分别处理等级制成绩和分数制成绩。对于等级制成绩,判断等级是否为"best"、"good"或"poor",如果是则统计等级制成绩的人数;对于分数制成绩,累加总分。最后输出等级制成绩的人数和分数制成绩的平均分(取整)。
阅读全文