题目要求输入的数据太多,改以2个学生,2门学科。符合题目则把预定义M 改为10,N改为5。
代码:
#include <stdio.h>
#define M 2
#define N 2
float ave1[N];
//第四问要用
int main(){
float arr[M][N];
void fun1(float arr[][N]);
void fun2(float arr[][N]);
void fun3(float arr[][N]);
void fun4(float arr[][N]);
for(int i=0;i<M;i++){
printf("请输入第%d个同学的成绩:\n",i+1);
for(int j=0;j<N;j++){
printf("第%d门成绩为: ",j+1);
scanf("%f",&arr[i][j]);
if(arr[i][j]>100||arr[i][j]<0){
printf("数据不合法,请重新输入!\n");
printf("第%d门成绩为: ",j+1);
scanf("%f",&arr[i][j]);
}
}
printf("---------------------\n");
}
printf("\n");
fun1(arr);
fun2(arr);
fun3(arr);
fun4(arr);
return 0;
}
//计算每个数学的平均分
void fun1(float arr[][N]){
float sum[N]={0};
int i,j;
for(i=0;i<M;i++){
for(int j=0;j<N;j++){
sum[i]+=arr[i][j];
}
ave1[i]=sum[i]/N;
printf("学生%d的平均成绩为:%0.2f\n",i+1,ave1[i]);
}
printf("\n");
}
//计算每门科目的平均分
void fun2(float arr[][N]){
float sum[N]={0},ave2;
int i,j;
for(i=0;i<M;i++){
for(j=0;j<N;j++){
sum[i]+=arr[j][i];
}
ave2=sum[i]/N;
printf("第%d门科目的平均成绩为:%0.2f\n",i+1,ave2);
}
printf("\n");
}
//找出所有分数中的最高的分数和所对应的学生的课程
void fun3(float arr[][N]){
float max=arr[0][0];
int i,j,m=0,n=0;
for(i=0;i<M;i++){
for(j=0;j<N;j++){
if(max<arr[i][j]){
max=arr[i][j];
m=i;
n=j;
}
}
}
printf("所有成绩中最高成绩为%0.2f\n",max);
printf("这个成绩是第%d个学生的第%d门科目\n",m+1,n+1);
printf("\n");
}
//计算平均分方差
void fun4(float arr[][N]){
int i;
float a=0,b=0,c,d,average;
for(i=0;i<M;i++){
a+=ave1[i]*ave1[i];
b+=ave1[i];
}
c=a/N;
d=(b/N)*(b/N);
printf("c=%0.2f,d=%0.2f\n",c,d);
average=c-d;
printf("平均分方差为%0.6f",average);
}
运行结果: