统计学生成绩,学生5人,课程四门,求每个人的总分和平均分,要求设计函数输入和输出
程序员文章站
2024-03-23 22:41:04
...
先看一下数组函数的一些知识
原本此篇博文是待解决的,然后我把未解决的代码码上,去描述这个问题时,突然找到解决点
最开始的问题是 process函数要调用input函数,我一直在process函数里调用它
导致input里的函数是输入值 那我不得输入两次值
后来改在主函数main里调用input函数,将其值存储在student中就解决了
#include<stdio.h>
#include<math.h>
#define N 5
#define M 4
int main()
{
double student[5][4];/30太多 把30改成5 即N 为5
int i, j;
//调用input函数
void input(double sore[][4], int n, int m);//函数声明 N=5 M=4
input(student,5,4); //调用输出成绩函数
for (i = 0; i < 5; i++)
for (j = 0; j < 4; j++) {
printf("%8.2lf", student[i][j]);//数组里保存了分数
if(j==3)
printf("\n");
}printf("\n");
//调用process函数
double zongfen[5];
double keaver[4];
void process(double student[][4],double a[], double aver[], int n, int m); //声明函数
process(student,zongfen,keaver,5,4);
for (i = 0; i < 5; i++) { //输出每个学生的总分
printf("%d学生总分分别是%8.2lf:",i,zongfen[i]);
printf("\n");
}
for (j = 0; j < 4; j++) //输出每门课的平均分
{
printf("每门课的平均分分别是%8.2lf: ",keaver[j]);
printf("\n");
}
}
//input 函数
void input(double sore[][4], int n, int m)
{
int i, j;
printf("请输入5名学生的4门课程分数:\n");
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
scanf_s("%lf", &sore[i][j]);
return sore;
}
//process 函数
void process(double student[][4],double a[], double aver[],int n,int m)//a[]是每个学生的总分0 v[]是每门课的总分 aver[]是四门课的平均分0
{
printf("请计算每个学生的总分和每门课的平均分数:\n");
int i,j;
double v[4];
//student里存储了每人的每项课分数
//每个学生的总分数存储在a[i]中;
for (i = 0; i < N; i++) //5个学生
{
a[i] = 0.0;
for (j = 0; j < M; j++)
a[i] += student[i][j];//每个学生的总分数存储在a[N]中;
}
//求每门课的平均分
for (i = 0; i < M; i++)//M=4
{
v[i] = 0.0;
for (j = 0; j < N; j++)//N=5
{
v[i] += student[j][i]; //m每门课的总分存在v[M] v[0] v[1] v[2] v[3]
}
}
for (i = 0; i < M; i++)
aver[i] = v[i] / 5; //求出四门课的平均分 将其存储在aver[M]中
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20200926160755237.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjA5NjI5Nw==,size_16,color_FFFFFF,t_70#pic_center)
上一篇: 【C语言】按等级统计学生成绩
下一篇: 汇编实验记录