学生成绩统计

18 篇文章 0 订阅

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;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值