如何使用C语言编程实现,从键盘输入四位同学每人的七科成绩,然后计算并分别显示每位同学的总分以及平均分(平均分保留两位小数)?同时,请确保程序包含适当的用户提示,并允许使用任意类型的循环结构来遍历数据。
时间: 2024-12-22 20:21:33 浏览: 3
计算机二级c语言资料-计算机二级c语言编程练习题之个人成绩平均分计算.zip
首先,我们需要创建一个二维数组来存储每位同学的成绩,然后利用循环结构(例如for或while)来获取输入并计算总分和平均分。这里我们假设学生的学号从1开始。以下是一个使用while循环的例子:
```c
#include <stdio.h>
#include <math.h> // 引入math库,以便使用round函数四舍五入
#define MAX_STUDENTS 4
#define MAX_SUBJECTS 7
// 定义一个结构体来存储学生信息
typedef struct {
int student_id;
float grades[MAX_SUBJECTS];
} Student;
int main() {
Student students[MAX_STUDENTS];
int student_count = 0;
int subject_index = 0;
// 用户提示和获取学号
printf("请输入学号(1-%d),当输入负数表示输入完成:\n", MAX_STUDENTS);
while (student_count < MAX_STUDENTS) {
int id;
scanf("%d", &id);
if (id < 0)
break; // 输入负数结束输入
// 确保学生编号唯一
while (students[student_count].student_id != 0 && student_count < MAX_STUDENTS - 1) {
student_count++;
}
students[student_count].student_id = id;
// 获取所有学科成绩
for (subject_index = 0; subject_index < MAX_SUBJECTS; subject_index++) {
scanf("%f", &students[student_count].grades[subject_index]);
}
student_count++;
}
// 计算总分和平均分
for (int i = 0; i < student_count; i++) {
float total_score = 0.0;
for (int j = 0; j < MAX_SUBJECTS; j++) {
total_score += students[i].grades[j];
}
students[i].total_score = total_score;
float average_score = round(total_score / MAX_SUBJECTS * 100) / 100.0; // 四舍五入到两位小数
printf("学生%d的总分:%.2f,平均分:%.2f\n", students[i].student_id, total_score, average_score);
}
return 0;
}
阅读全文