c语言
输入10个学生5门课的成绩,分别用函数求:
每个学生平均分;
每门课的平均分;
#include <stdio.h>
#include<math.h>
float RowAverage(float score[][5], int nTOTAL_ROWS, int nRow); //个人成绩平均分
float ColAverage(float score[][5], int nTOTAL_ROWS, int nCol); //某课程成绩平均分
int main()
{
//2. 确定应用中需要的变量
float score[10][5];
int nRow = 0, nCol = 0; //拟求均值的学生及课程
float rowAverage = 0.0, colAverage = 0.0;//求得的均值
int nStudentNums = 2; //在调试时,可先测试2个学生5门课/*
int i, j;
for(i=0; i<10; i++)
{
printf("第%d个同学的成绩(空格分开):",i+1);
for(j=0; j<5; j++)
{
//输入学生成绩
scanf("%f",&score[i][j]);
}
}//**输入时数字之间用空格分隔**
printf("\n");
printf("计算所有学生的成绩均值:\n");
for (int i = 0; i < 10; i++)
{
float average1 = RowAverage(score, 10, i);
//此处格式:打印1位小数,另外下面语句中的i+1 有何好处?
//因为数组中下标以0开始,要想表示第一名则下标是为0的数据,则i+1才表示正确
printf("第 %d 个学生的成绩均值为:%.1f\n", i + 1, average1);
}
printf("\n");
printf("计算所有课程的成绩均值:\n" );
for (int i = 0; i < 10; i++)
{
float average2 = ColAverage(score, 10, i);
//此处格式:打印1位小数,另外下面语句中的i+1 有何好处?
//因为数组中下标以0开始,要想表示第一名则下标是为0的数据,则i+1才表示正确
printf("第%d门课的平均分分别为%0.2f\n", i + 1,average2);
}
return 0;
}
float RowAverage(float score[][5], int nTOTAL_ROWS, int nRow)
{
float rowAverage = 0.0;
float sum = 0.0;
for(int i=0; i<5; i++)
sum += score[nRow][i];
rowAverage = sum/5;
return rowAverage;
}
float ColAverage(float score[][5], int nTOTAL_ROWS, int nCol)
{
float colAverage = 0.0;
float sum = 0.0;
for(int i=0; i<nTOTAL_ROWS; i++)
sum += score[i][nCol];
colAverage = sum/nTOTAL_ROWS;
return colAverage;
}
可参考:
已知 函数头为float avg(float a[],int n),写出函数定义
#include "stdio.h"
float avg(float a[],int n){
int i;
float s;
for(s=0.0,i=0;i<n;s+=a[i++]);
return s/n;
}
int main(int argc,char *argv[]){//测试主函数
float a[]={1,2,3,4,5,6,7,8,9,10};
printf("%f\n",avg(a,10));
return 0;
}