发布网友 发布时间:2023-02-11 02:02
共1个回答
热心网友 时间:2023-07-04 16:09
定义学生课程结构体,分配五门课程的属性,然后添加十个学生和每个学生对应的数据,最后添加通过累加每个学生成绩计算学生平均分的循环,累加所有学生各个属性来计算每门课平均分的循环。第三个问题直接遍历就行。追问能写一下代码吗追答#include<stdio.h>
#include<string.h>
#define N 10
float a_stu[N];
void average1(int str1[][5], int m, int n);
void average2(int str1[][5], int m, int n);
void average3(int str1[][5], int m, int n);
int main()
{
int str[10][5] = { { 89,67,78,60,23 },{ 33,45,67,12,23 },{ 55,66,77,88,99 },{ 21,32,43,54,65 },
{ 81,82,83,84,85 },{ 54,56,78,90,98 },{ 95,96,97,95,97 },{ 34,54,12,12,12 },{ 55,78,32,19,19 },
{ 78,76,65,78,79 } };
printf("每个学生的平均成绩\n");
average1(str, 10, 5);
printf("每门课的平均成绩\n");
average2(str, 10, 5);
average3(str, 10, 5);
getchar();
return 0;
}
void average1(int str1[][5], int m, int n)//单个学生的平均成绩
{
int i, j;
float average1;
for (i = 0; i<m; i++)
{
float sum = 0;
for (j = 0; j<n; j++)
{
sum += str1[i][j];
}
a_stu[i] = sum / n;
printf("%.2f\n", a_stu[i]);
}
}
void average2(int str1[][5], int m, int n)//单门课的平均成绩
{
int i, j;
float average2;
for (j = 0; j<n; j++)
{
float sum = 0;
for (i = 0; i<m; i++)
{
sum += str1[i][j];
}
average2 = sum / m;
printf("%.2f\n", average2);
}
}
void average3(int str1[][5], int m, int n)
{
int max = str1[0][0];
int p, k, i, j;
for (i = 0; i<10; i++)
{
for (j = 0; j<5; j++)
if (str1[i][j]>max)
{
max = str1[i][j];
k = i;
p = j;
}
}
printf("最高分对应的学生和课程\n");
printf("max=%d,k=%d,p=%d\n", max, k, p);
}