PAT1004成绩排名(C++)(由new动态创建一维数组)

PAT1004成绩排名(C++)(由new动态创建一维数组)_第1张图片
这道题可以有两种解法,学指针之前,我是这样做的:

#include

using namespace std;

int main()
{
     
	int n;
	cin >> n;
	string name[1000]; string xuehao[1000]; int score[1000];
	for (int i = 0; i < n; i++)
	{
     
		cin >> name[i] >> xuehao[i] >> score[i];
	}
	int temp = 0; 
	int max = score[0];
	for (int j = 1; j < n; j++)
	{
     
		if (score[j] > max)
		{
     
			max = score[j];
			temp = j;
		}
	}
	cout << name[temp] << " " << xuehao[temp] <<endl;
	int temp1 = 0;
	int min = score[0];
	for (int j = 1; j < n; j++)
	{
     
		if (score[j] < min)
		{
     
			min = score[j];
			temp1 = j;
		}
	}
	cout << name[temp1] << " " << xuehao[temp1] <<endl ;
	return 0;
}

但是这种做法不保险,因为n的取值范围是不确定的,学完指针后,我是这样做这道题的:

#include
using namespace std;

int main()
{
     
	int n;
	cin >> n;
	string* name=new string[n]; 
	string* xuehao=new string[n]; 
	int* score=new int[n];
	for (int i = 0; i < n; i++)
	{
     
		cin >> name[i] >> xuehao[i] >> score[i];
	}
	int temp = 0; 
	int max = score[0];
	for (int j = 1; j < n; j++)
	{
     
		if (score[j] > max)
		{
     
			max = score[j];
			temp = j;
		}
	}
	cout << name[temp] << " " << xuehao[temp] <<endl;
	int temp1 = 0;
	int min = score[0];
	for (int j = 1; j < n; j++)
	{
     
		if (score[j] < min)
		{
     
			min = score[j];
			temp1 = j;
		}
	}
	cout << name[temp1] << " " << xuehao[temp1] <<endl ;
	delete[] name;
	delete[] xuehao;
	delete[] score;
	return 0;
}

利用动态内存分配操作实现了数组的动态创建,使得数组元素的个数可以根据运行时的需要而确定。使用new 运算符动态创建一维数组的语法形式为:new 类型名 [数组长度];(其中,数组长度指出了数组元素的个数,它可以是任何能够得到正整数值的表达式)例如:string* name=new string[n]; 运算符delete用来删除由new建立的对象,释放指针所指向的内存空间,语法格式为:delete[] 指针名;例如:delete[] name;new和delete需要“配套使用”,而且对于new创建的对象,只能使用delete进行一次删除操作,如果对同一内存空间多次使用delete进行删除将会导致运行错误。

你可能感兴趣的:(C++编程题,c++)