学生成绩系统一代目

描述

现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。编写一个函数input,用来输入一个学生的数据记录。编写一个函数print,打印一个学生的数据记录。在主函数调用这两个函数,读取N条记录输入,再按要求输出。N<100。

输入

学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。

输出

每个学生的学号、姓名、三科成绩占一行,逗号分开。

输入样例 1 

2
a100 zhblue 70 80 90
b200 newsclan 90 85 75

输出样例 1

a100,zhblue,70,80,90
b200,newsclan,90,85,75

输入样例 2 

3
01 guo 100 100 90
02 chen 60 70 65
03 fang 80 75 65

输出样例 2

01,guo,100,100,90
02,chen,60,70,65
03,fang,80,75,65

代码一(如下):无函数调用

#include 
#include 
using namespace std;
int main()
{
	int N;
	cin >> N;
	string student[100][5];
	for (int i = 1; i <= N; i++)
	{
		for (int j = 1; j <= 5; j++)
		{
			cin >> student[i][j];
		}

	}
	for (int i = 1; i <= N; i++)
	{
		for (int j = 1; j <= 5; j++)
		{
			cout<

代码二(如下):函数调用

#include 
#include 
using namespace std;
void input(int n,string student[][5])
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= 5; j++)
		{
			cin >> student[i][j];
		}
	}
}
void print(int n, string student[][5])
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= 5; j++)
		{
			cout<> N;
	string student[100][5];
	input(N, student);
	print(N, student);
	return 0;
}

代码三(如下):采用结构体类型+无函数调用

#include 
using namespace std;
struct Student
{
	char xvehao[10];
	char name[20];
	int score[3];
};
int main()
{
	int N;
	cin >> N;
	Student student[100];
	for (int i = 1; i <= N; i++)
	{
		cin >> student[i].xvehao;
		cin >> student[i].name;
		for (int j = 0; j < 3; j++)
		{
			cin >> student[i].score[j];
		}
	}
	for (int i = 1; i <= N; i++)
	{
		cout << student[i].xvehao << ",";
		cout << student[i].name << ",";
		for (int j = 0; j < 3; j++)
		{
			cout<< student[i].score[j];
			if (j != 2)cout << ",";
		}
		cout << endl;
	}
	return 0;
}

代码四(如下):采用结构体类型+函数调用

#include 
using namespace std;
struct Student
{
	char xvehao[10];
	char name[20];
	int score[3];
};
void input(int n, Student student[])
{
	for (int i = 1; i <= n; i++)
	{
		cin >> student[i].xvehao;
		cin >> student[i].name;
		for (int j = 0; j < 3; j++)
		{
			cin >> student[i].score[j];
		}
	}
}
void print(int n, Student student[])
{
for (int i = 1; i <= n; i++)
	{
		cout << student[i].xvehao << ",";
		cout << student[i].name << ",";
		for (int j = 0; j < 3; j++)
		{
			cout<< student[i].score[j];
			if (j != 2)cout << ",";
		}
		cout << endl;
	}
}
int main()
{
	int N;
	cin >> N;
	Student student[100];
	input(N, student);
	print(N, student);
	return 0;
}

问题点:

①:二维数组的传参格式

函数声明与定义中:

void function(int a[m][n]);                      //函数声明

void function(int a[ ][n]);                         //不论多少维数组,第一维都可省略。

//凭什么第二维就不可省略呢?由编译器的寻址方式决定。

函数调用中:

function(a);                                   //函数调用  实参直接写数组名!数组名!(重点)

//(注意)function(a[m][n])或function(a[ ][n])都不可以!

该部分选自[C语言]二维数组传参的格式(详细+总结)_c语言二维数组传参_思简行繁乃成的博客-CSDN博客 

②:结构体数组

一个结构体变量中可以存放一组数据(如一个学生的学号、姓名、成绩等数据)。如果有10个学生的数据需要参加运算,显然应该用数组,这就是结构体数组:每个数组元素都是一个结构体类型的数据,它们都包括各个成员项。 

你可能感兴趣的:(ACM作业,c++)