欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组动态规划,变量自动记录

程序员文章站 2022-06-26 19:50:34
...

在学生体结构中,不需要从键盘直接获得学生人数,而是从键盘输入学生信息,自动记录人数
基础代码:

#include <iostream>
using namespace std;

//函数原型 

struct Student{
	int  ID;//char ID[15]; string 
	int age;
};


int maxInt(Student array[], int number)
{
	Student temp = array[0];
	int location = 0;
	for (int i = 0; i<number; i++)
	{
		if (temp.age <= array[i].age)
		{
			temp = array[i];
			location = i;
		}
	}
	return location;
}

void outPut(int array[], int number)
{
	for (int i = 0; i<number; i++)
	{
		cout << array[i] << "  ";
	}
	cout << endl;
}

int main()
{
	Student stu[5] = { { 1, 18 }, { 2, 20 }, { 3, 17 }, { 4, 19 }, { 5, 16 } };
	int location = maxInt(stu, 5);
	cout << stu[location].ID << "       " << stu[location].age << endl;
	return 0;
}

修改后能动态记录:

struct Student* st[99];  //开辟一个结构体指针数组,用来存放输入的学生实例地址 
	cout << "请输入多组学生的id和age" << endl;

	int i = 0; //计数 
	while (1){
		int ID = 0;
		int age = 0;
		cin >> ID;
		if (ID == -1)
			break;
		cin >> age;
		st[i] = (struct Student*)malloc(sizeof(struct Student));
		st[i]->ID = ID;
		st[i]->age = age;
		i++;
	}
	cout << "总共有" << i << "个学生!" << endl;

	for (int j = 0; j < i; ++j) {
		cout << "第" << j << "个学生的信息:" << st[j]->ID << st[j]->age << endl;
	}

malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。还有一点必须注意的是,当函数未能成功分配存储空间(如内存不足)就会返回一个NULL指针。所以在调用该函数时应该检测返回值是否为NULL并执行相应的操作。