有2个学生3门成绩,利用函数找出6个成绩中的最高分对应的学生和课程,用c语言写出来
时间: 2023-05-17 20:06:20 浏览: 42
以下是C语言代码:
```
#include <stdio.h>
int main() {
int scores[2][3] = {{80, 90, 70}, {85, 75, 95}};
int maxScore = 0;
int maxStudent = 0;
int maxCourse = 0;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
if (scores[i][j] > maxScore) {
maxScore = scores[i][j];
maxStudent = i + 1;
maxCourse = j + 1;
}
}
}
printf("最高分数为%d,对应的学生为%d,对应的课程为%d\n", maxScore, maxStudent, maxCourse);
return 0;
}
```
这个程序会输出最高分数、对应的学生和对应的课程。
相关问题
C语言在一个程序中输入3个学生5门课的成绩,分别用函数求:每个学生的平均分;每门课的平均分;找出最高的分数和对应的学生及课程
好的,我来解答你的问题。
以下是 C 语言程序,实现了你所提到的三个功能:
```c
#include<stdio.h>
#include<string.h>
#define N 3 // 学生数
#define M 5 // 课程数
// 求每个学生的平均分
void avg_stu(float (*p)[M]){
int i, j;
float sum;
for(i=0;i<N;i++){
sum = 0;
for(j=0;j<M;j++){
sum += p[i][j];
}
printf("第%d个学生的平均分为%.2f\n", i+1, sum/M);
}
}
// 求每门课的平均分
void avg_cou(float (*p)[M]){
int i, j;
float sum;
for(j=0;j<M;j++){
sum = 0;
for(i=0;i<N;i++){
sum += p[i][j];
}
printf("第%d门课的平均分为%.2f\n", j+1, sum/N);
}
}
// 找出最高的分数和对应的学生及课程
void max_score(float (*p)[M]){
int i, j, row, col;
float max = p[0][0];
for(i=0;i<N;i++){
for(j=0;j<M;j++){
if(p[i][j] > max){
max = p[i][j];
row = i+1;
col = j+1;
}
}
}
printf("最高的分数为%.2f,对应的学生为第%d个,课程为第%d门\n", max, row, col);
}
int main(){
float score[N][M];
int i, j;
printf("请输入%d个学生的%d门课的成绩:\n", N, M);
for(i=0;i<N;i++){
printf("请输入第%d个学生的成绩:\n", i+1);
for(j=0;j<M;j++){
scanf("%f", &score[i][j]);
}
}
avg_stu(score);
avg_cou(score);
max_score(score);
return 0;
}
```
希望这个程序能够帮助你解决你的问题。
用C语言编程,输入10个学生5门课的成绩,分别用函数计算每个学生的平均分,每门课的平均分,找出最高分对应的学生和课程,计算平均分方差
好的,这是一个比较综合的C语言编程题目,下面是示例代码:
```c
#include <stdio.h>
#include <math.h>
void calc_stu_avg(float *grades, int n) {
float sum = 0;
for (int i = 0; i < n; i++) {
sum += grades[i];
}
printf("%.2f", sum / n);
}
void calc_sub_avg(float (*grades)[5], int n) {
for (int i = 0; i < 5; i++) {
printf("第%d门课的平均分为:", i + 1);
float sum = 0;
for (int j = 0; j < n; j++) {
sum += grades[j][i];
}
printf("%.2f\n", sum / n);
}
}
void find_max(float (*grades)[5], int n, int *max_stu, int *max_sub) {
float max_grade = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < 5; j++) {
if (grades[i][j] > max_grade) {
max_grade = grades[i][j];
*max_stu = i;
*max_sub = j;
}
}
}
}
float calc_variance(float *grades, int n) {
float sum = 0;
float avg = 0;
for (int i = 0; i < n; i++) {
sum += grades[i];
}
avg = sum / n;
sum = 0;
for (int i = 0; i < n; i++) {
sum += pow(grades[i] - avg, 2);
}
return sum / n;
}
int main() {
float grades[10][5];
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的5门成绩:\n", i + 1);
for (int j = 0; j < 5; j++) {
scanf("%f", &grades[i][j]);
}
}
printf("每个学生的平均分分别为:\n");
for (int i = 0; i < 10; i++) {
printf("第%d个学生的平均分为:", i + 1);
calc_stu_avg(grades[i], 5);
printf("\n");
}
printf("每门课的平均分分别为:\n");
calc_sub_avg(grades, 10);
int max_stu, max_sub;
find_max(grades, 10, &max_stu, &max_sub);
printf("最高分对应的学生为第%d个学生,最高分对应的课程为第%d门课\n", max_stu + 1, max_sub + 1);
float all_grades[50];
int k = 0;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
all_grades[k] = grades[i][j];
k++;
}
}
float variance = calc_variance(all_grades, 50);
printf("平均分方差为:%.2f\n", variance);
return 0;
}
```
上面的代码中,我们定义了四个函数 `calc_stu_avg`、`calc_sub_avg`、`find_max` 和 `calc_variance` 分别用来计算每个学生的平均分、每门课的平均分、找出最高分对应的学生和课程以及计算平均分方差。在 `main` 函数中,我们定义了一个二维数组 `grades` 来存储10个学生的5门成绩。接着,我们使用两个嵌套的循环分别输入每个学生的5门成绩,并将其存储到 `grades` 数组中。
然后,我们先使用一个循环遍历每个学生,将该学生的5门成绩存储到一个一维数组中,然后调用 `calc_stu_avg` 函数计算平均分并输出即可。
最后,我们依次调用 `calc_sub_avg` 函数计算每门课的平均分、`find_max` 函数找出最高分对应的学生和课程以及 `calc_variance` 函数计算平均分方差并输出即可。在 `find_max` 函数中,我们使用两个嵌套的循环遍历每个学生在每门课的成绩,并找出最高分。在 `calc_variance` 函数中,我们先计算出所有成绩的平均分,然后再计算每个成绩与平均分的差的平方,并求和。最后再除以成绩数即可得到平均分方差。