有n个学生,每个学生的数据包括学号,C语言程序设计课程的平时成绩和期木考试成绩,测试数据已在主函数中,要求按平时成绩占30%,期末成绩占70%计算总评成绩。 并将总评成绩低于90分,且高于等于80分的同学的等级确定为“良好”,并将这些同学的对应信息存放在结构体数组h中,人数通过函数返回值得到,输出相应的信息。
时间: 2023-12-09 21:02:58 浏览: 126
好的,这是一个关于学生成绩的问题,我会帮你解答。首先,我们需要定义一个结构体来存储学生的信息,包括学号、平时成绩和期末成绩。代码如下:
```
typedef struct {
int id; // 学号
float daily_score; // 平时成绩
float final_score; // 期末成绩
float total_score; // 总评成绩
char level[10]; // 等级
} Student;
```
接下来,我们可以通过一个函数来计算每个学生的总评成绩和等级,代码如下:
```
int calculate_score(Student students[], int n, Student h[]) {
int count = 0; // 计数器,记录总评成绩低于90分,且高于等于80分的学生人数
for (int i = 0; i < n; i++) {
students[i].total_score = students[i].daily_score * 0.3 + students[i].final_score * 0.7; // 计算总评成绩
if (students[i].total_score >= 80 && students[i].total_score < 90) {
strcpy(students[i].level, "良好"); // 等级为“良好”
h[count] = students[i]; // 将该学生信息存放在结构体数组 h 中
count++; // 计数器加1
}
}
return count; // 返回总人数
}
```
最后,我们可以在主函数中输入学生信息,调用计算函数,并输出等级为“良好”的学生信息,代码如下:
```
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
Student students[n];
printf("请输入每个学生的信息(学号,平时成绩,期末成绩):\n");
for (int i = 0; i < n; i++) {
scanf("%d %f %f", &students[i].id, &students[i].daily_score, &students[i].final_score);
}
Student h[n]; // 定义结构体数组 h,用于存放等级为“良好”的学生信息
int count = calculate_score(students, n, h);
printf("等级为“良好”的学生信息如下:\n");
for (int i = 0; i < count; i++) {
printf("学号:%d,平时成绩:%.2f,期末成绩:%.2f,总评成绩:%.2f,等级:%s\n", h[i].id, h[i].daily_score, h[i].final_score, h[i].total_score, h[i].level);
}
printf("总人数:%d\n", count);
return 0;
}
```
注意:在使用 strcpy 函数时,需要包含头文件<string.h>。另外,为了方便起见,这里使用了浮点数来表示成绩,实际应用中应该根据具体情况进行调整。
阅读全文