用C语言编写程序:输入 5 个学生的学号和每位学生 3 门功课的成绩,输出: 1) 每个学生的平均分; 2) 每门功课的平均分; 3) 找出每门功课中的最高分和最低分,以及它所对应的 学生的学号; 4) 找出所有 15 个分数中的最高分和最低分,以及它所 对应的课程名; 5) 平均分方差
时间: 2024-02-17 08:04:37 浏览: 25
好的,我可以帮你提供一个C语言的解决方案。以下是完整的程序代码:
```c
#include <stdio.h>
#define NUM_STUDENTS 5
#define NUM_COURSES 3
int main() {
int scores[NUM_STUDENTS][NUM_COURSES];
char sids[NUM_STUDENTS][10];
// 输入数据
printf("请输入每个学生的学号和成绩,格式为:学号 语文数学英语\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
scanf("%s", sids[i]);
for (int j = 0; j < NUM_COURSES; j++) {
scanf("%d", &scores[i][j]);
}
}
// 计算每个学生的平均分
printf("每个学生的平均分:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
int sum = 0;
for (int j = 0; j < NUM_COURSES; j++) {
sum += scores[i][j];
}
double avg = (double)sum / NUM_COURSES;
printf("%s: %.2f\n", sids[i], avg);
}
// 计算每门功课的平均分
printf("每门功课的平均分:\n");
for (int j = 0; j < NUM_COURSES; j++) {
int sum = 0;
for (int i = 0; i < NUM_STUDENTS; i++) {
sum += scores[i][j];
}
double avg = (double)sum / NUM_STUDENTS;
switch (j) {
case 0: printf("语文: %.2f\n", avg); break;
case 1: printf("数学: %.2f\n", avg); break;
case 2: printf("英语: %.2f\n", avg); break;
}
}
// 找出每门功课中的最高分和最低分,以及它所对应的学生的学号
int min_scores[NUM_COURSES] = {100, 100, 100};
int max_scores[NUM_COURSES] = {0, 0, 0};
char min_sids[NUM_COURSES][10];
char max_sids[NUM_COURSES][10];
for (int j = 0; j < NUM_COURSES; j++) {
for (int i = 0; i < NUM_STUDENTS; i++) {
if (scores[i][j] < min_scores[j]) {
min_scores[j] = scores[i][j];
strcpy(min_sids[j], sids[i]);
}
if (scores[i][j] > max_scores[j]) {
max_scores[j] = scores[i][j];
strcpy(max_sids[j], sids[i]);
}
}
switch (j) {
case 0:
printf("语文:最低分 %d(%s),最高分 %d(%s)\n",
min_scores[j], min_sids[j], max_scores[j], max_sids[j]);
break;
case 1:
printf("数学:最低分 %d(%s),最高分 %d(%s)\n",
min_scores[j], min_sids[j], max_scores[j], max_sids[j]);
break;
case 2:
printf("英语:最低分 %d(%s),最高分 %d(%s)\n",
min_scores[j], min_sids[j], max_scores[j], max_sids[j]);
break;
}
}
// 找出所有 15 个分数中的最高分和最低分,以及它所对应的课程名
int min_score = 100;
int max_score = 0;
char min_course_name[10];
char max_course_name[10];
for (int i = 0; i < NUM_STUDENTS; i++) {
for (int j = 0; j < NUM_COURSES; j++) {
if (scores[i][j] < min_score) {
min_score = scores[i][j];
switch (j) {
case 0: strcpy(min_course_name, "语文"); break;
case 1: strcpy(min_course_name, "数学"); break;
case 2: strcpy(min_course_name, "英语"); break;
}
}
if (scores[i][j] > max_score) {
max_score = scores[i][j];
switch (j) {
case 0: strcpy(max_course_name, "语文"); break;
case 1: strcpy(max_course_name, "数学"); break;
case 2: strcpy(max_course_name, "英语"); break;
}
}
}
}
printf("所有 15 个分数中的最高分和最低分,以及它所对应的课程名:\n");
printf("最低分 %d(%s),最高分 %d(%s)\n", min_score, min_course_name, max_score, max_course_name);
// 计算平均分方差
double avg_scores[NUM_STUDENTS];
double sum = 0;
for (int i = 0; i < NUM_STUDENTS; i++) {
int s = 0;
for (int j = 0; j < NUM_COURSES; j++) {
s += scores[i][j];
}
avg_scores[i] = (double)s / NUM_COURSES;
sum += avg_scores[i];
}
double mean = sum / NUM_STUDENTS;
double variance = 0;
for (int i = 0; i < NUM_STUDENTS; i++) {
variance += (avg_scores[i] - mean) * (avg_scores[i] - mean);
}
variance /= NUM_STUDENTS;
printf("平均分方差:%.2f\n", variance);
return 0;
}
```
希望这个C语言的解决方案能够帮到你!
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)