c语言
输入10个学生5门课的成绩,分别用函数求:
每个学生平均分;
每门课的平均分;
需要用框架的语句
#include
1. 在此给出函数声明
1).根据模块化设计的原则,将应用需求分成若干模块(函数);
2).确定应给函数传递什么数据?
3).函数处理后,需要返回什么数据给调用函数?
3).采用什么参数传递数据?
4).函数是否需要返回值?
//在此给出函数的声明(函数原型)
//思考:数组名作为函数参数时,为何需要传递一个数组中可用的元素个数参数(此处为:nTOTAL_ROWS)
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门课/*
3. 完成数组的输入
1).如何实现二维数组的输入;
2).如何在程序中先进行少量数据的测试,待程序基本完善后再进行
大数据量的测试
//在此给出输入及输入数据验证的语句
4. 调用数据处理函数;
1) 现实中的需要求可能是什么?
2)一次求所有学生的成绩均值?
3)一次求所有课程的均值?
4)求用户指定内从的均值?
5. 输出计算结果
//在此给出输出语句
//在此给出具体的数据处理
//此处的函数调用及输出应根据用户的需求来确定
//现在假设是要求所有学生及所有课程的成绩均值
// (3)、(4)的代码应为如下形式:
printf("计算所有学生的成绩均值:\n");
for (int i = 0; i < nStudentNums; i++) {
float average = RowAverage(score, nStudentNums, i);
//此处格式:打印1位小数,另外下面语句中的i+1 有何好处?
printf("第 %d 个学生的成绩均值为:%.1f\n", i + 1, average);
}
printf("计算所有课程的成绩均值:\n");
//各位同学可以模仿上面的代码,自己来完成
return 0;
}
//在源程序中的任意位置给出函数定义
float RowAverage(float score[][5], int nTOTAL_ROWS, int nRow) {
float rowAverage = 0.0;
//自行给出具体实现
return rowAverage;
}
float ColAverage(float score[][5], int nTOTAL_ROWS, int nCol) {
float colAverage = 0.0;
//自行给出具体实现
return colAverage;
}
#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 个学生的成绩均值为:%.2f\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 RowAverage(float score[][5], int nTOTAL_ROWS, int nRow) {
float rowAverage = 0.0;
float sum = 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;
for(int i=0;i<nTOTAL_ROWS;i++)
sum += score[i][nCol];
colAverage = sum/nTOTAL_ROWS;
return colAverage;
}