现有4位同学,每位同学有7科成绩,编程实现键盘输入成绩,分别求每位同学的总分和平均分,平均分保留两位小数(C语言)
时间: 2024-12-22 09:21:41 浏览: 9
在C语言中,你可以使用循环结构和数组来实现这个功能。首先,你需要定义一个结构体来存储学生的姓名和成绩数组,然后通过`scanf`函数获取输入,计算总分和平均分。下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h> // 用于字符串操作
// 定义学生信息结构体
typedef struct {
char name[50]; // 假设姓名最多50字符
int scores[7]; // 学生的7科成绩
} Student;
void input_scores(Student* student) {
for (int i = 0; i < 7; i++) {
printf("请输入第%d科的成绩 (%s): ", i + 1, student->name);
scanf("%d", &student->scores[i]);
}
}
double calculate_average(int* arr, int size) {
double sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum / size;
}
int main() {
Student students[4]; // 存储四位同学的信息
char temp_name[50];
for (int i = 0; i < 4; i++) {
printf("请输入第%d位同学的姓名: ", i + 1);
fgets(temp_name, sizeof(temp_name), stdin); // 使用fgets防止换行符污染输入
temp_name[strcspn(temp_name, "\n")] = '\0'; // 去除末尾的换行符
strcpy(students[i].name, temp_name);
input_scores(&students[i]); // 输入该同学的各科成绩
int total_score = 0;
for (int j = 0; j < 7; j++) {
total_score += students[i].scores[j];
}
double average = calculate_average(students[i].scores, 7);
printf("学生 %s 的总分: %d\n", students[i].name, total_score);
printf("学生 %s 的平均分: %.2f\n", students[i].name, average);
}
return 0;
}
```
阅读全文