1、学生成绩统计
课程1 课程2 课程3
学生1 89 78 56
学生2 88 99 100
学生3 72 80 61
学生4 60 70 75
题目要求
(1)定义二维数组来存放各个学生各门课程成绩
(2)求每门课程的学生平均成绩(每列),保存并输出
(3)求每个学生的各门课程平均成绩(每行),保存并输出
代码如下:
#include <iostream>
#include <iomanip>/*用于格式输出*/
using namespace std;
/************效果**************
*请输入数据:
*第1名同学的成绩:
*89 78 56
*第2名同学的成绩:
*88 99 100
*第3名同学的成绩:
*72 80 61
*第4名同学的成绩:
*60 70 75
*每一个学生的平均成绩是:
*74.3
*95.7
*71.0
*68.3
*
*每一门课程的平均成绩是:
*77.8
*89.8
*68.3
*
*学生 课程1 课程2 课程3 平均成绩
*学生1 89 78 56 74.3
*学生2 88 99 100 95.7
*学生3 72 80 61 71.0
*学生4 60 70 75 68.3
*平均s 77.8 89.8 68.3
*/
//定义宏,数组参数//
#define SIZE_WIDTH 4
#define SIZE_LENGTH 3
//函数的声明//
void input(int * p);/*输入数据函数*/
void average_s1(int *, float *);/*计算学生平均成绩*/
void average_c1(int *, float *);/*计算课程的平均成绩*/
void output(int *, float *, float *);/*生成表格*/
int main()
{
int array[SIZE_WIDTH][SIZE_LENGTH];/*用来存放数据*/
float average_s[SIZE_WIDTH];/*学生每一门平均成绩*/
float average_c[SIZE_LENGTH];/*每一门课程的平均成绩*/
input(&array[0][0]);/*调用输入函数进行数据的输入*/
average_s1(&array[0][0], &average_s[0]);/*求每个学生的平均成绩*/
average_c1(&array[0][0], &average_c[0]);/*求每门课程的平均成绩*/
output(&array[0][0], &average_s[0], &average_c[0]);/*输出表格*/
return 0;/*程序结束*/
}
void input(int * p)/*输入数据的函数*/
{
int i, j;
cout << "请输入数据:\n";
for (i=0; i<SIZE_WIDTH; ++i)
{
cout << "第" << i+1 << "名同学的成绩:\n";
for (j=0; j<SIZE_LENGTH; ++j)
{
cin >> *(p+i*SIZE_LENGTH+j);
}
while (getchar() != '\n')/*消除多余的成绩*/
;
}
}
void average_s1(int * p, float * average)/*求每个学生的平均成绩*/
{
int i, j;
int sum=0;
for (i=0; i<SIZE_WIDTH; ++i)
{
sum = 0;
for (j=0; j<SIZE_LENGTH; ++j)
{
sum = *(p+i*SIZE_LENGTH+j) + sum;
}
*(average+i) = sum / float(SIZE_LENGTH);
}
cout << "每一个学生的平均成绩是:\n";
cout << setprecision(1) << setiosflags(ios::fixed);
for (i=0; i<SIZE_WIDTH; ++i)
cout << average[i] << endl;
cout << endl;
}
void average_c1(int * p, float * average)/*求每门课程的平均成绩*/
{
int i, j;
int sum=0;
for (i=0; i<SIZE_LENGTH; ++i)
{
sum = 0;
for (j=0; j<SIZE_WIDTH; ++j)
{
sum = *(p+i*SIZE_LENGTH+j) + sum;
}
*(average+i) = sum / float(SIZE_WIDTH);
}
cout << "每一门课程的平均成绩是:\n";
cout << setprecision(1) << setiosflags(ios::fixed);
for (i=0; i<SIZE_LENGTH; ++i)
cout << average[i] << endl;
cout << endl;
}
void output(int * p, float * q, float * q2)/*生成表格*/
{
int i, j;
cout << "学生 课程1 课程2 课程3 平均成绩\n";
cout << setiosflags(ios::left);
for (i=0; i<SIZE_WIDTH; ++i)
{
cout << "学生" << i+1 << '\t';
for (j=0; j<SIZE_LENGTH; ++j)
{
cout << setw(7) << *(p+i*SIZE_LENGTH+j);
}
cout << setw(7) << *(q+i);
cout << endl;
}
cout << "平均s ";
for (i=0; i<SIZE_LENGTH; ++i)
{
cout << setw(7) << *(q2+i);
}
cout << endl;
}