关于动态(长度不定)结构体数组的两种处理方法

2023-05-16

讲解这个问题,以一个例子入手:PAT(A)1080 Graduate Admission

方法一:
定义一个结构体数组,为该数组开辟一块大的存储空间,然后进行初始化赋值。

#include<iostream>

using namespace std;

struct student {
	int ge;
	int gi;
	int b[6] = { 0 };
};

int main()
{
	struct student *stu;
	int n, m, k;
	// n申请人总数,m研究生院总数,k申请人可以选择的数量
	cin >> n >> m >> k;
	/*
	int a[101] = { 0 }; // 每个研究生院的配额
	for (int i = 0; i < m; i++)
	{
		int g;
		cin >> g;
		a[i] = g;
	}
	*/
	//为结构体分配存储空间
	stu = (struct student *)malloc(40000* sizeof(struct student));
	for (int i = 0; i < n; i++) // 为所有学生输入他的各项信息
	{
		int c, d, e;
		cin >> c >> d;
		stu[i].ge = c;
		stu[i].gi = d;
		for (int j = 0; j < k; j++)
		{
			cin >> e;
			stu[i].b[j] = e;
		}
	}
	for (int i = 0; i < n; i++)
		for(int j=0; j<k; j++)
		cout << stu[i].ge << "  " << stu[i].gi << "  " << stu[i].b[j] << endl;

	system("pause");
	return 0;
}

输入:
3 6 3
100 100 0 1 2
60 60 2 3 5
100 90 0 3 4

输出:
在这里插入图片描述
通过输出可以发现,输入的数据都存入了对应每个学生结构体的各项信息中。

方法二:
通过vector来进行动态数组的赋值操作

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct stu {
    int id;
    double g1, g2;
    int choice[6];
};

int main() 
{
    int n, m, k;
	cin>>n>>m>>k;
    vector<stu> students; 
	stu tmp;
    for (int i = 0; i < n; i++) 
	{
        tmp.id = i;
        int a,b;
		cin>>a>>b;
		tmp.g1=a;
		tmp.g2=b;
        for (int j = 0; j < k; j++) 
        {
            int c;
            cin>>c;
		    tmp.choice[j]=c;
		}
        students.push_back(tmp);
    }
    
	for(int i=0; i<n; i++)
	{
		for(int j=0; j<k; j++)
		cout<<students[i].g1<<"  "<<students[i].g2<<"  "<<students[i].choice[j]<<endl;
	} 
	
    return 0;
}

输入:
5 6 3
100 100 0 1 2
60 60 2 3 5
100 90 0 3 4
90 100 1 2 0
90 90 5 1 3

输出:
在这里插入图片描述
通过输出可以发现,输入的数据都存入了对应每个学生结构体的各项信息中。

故对于动态数组结构体的处理,有以上两种方法,关于PAT(A)1080 的详细的解题过程及代码,参见其他博客。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于动态(长度不定)结构体数组的两种处理方法 的相关文章

随机推荐

  • Docker EEDocker CE简介与版本规划

    Docker EEDocker CE简介与版本规划 更多干货 分布式实战 xff08 干货 xff09 spring cloud 实战 xff08 干货 xff09 mybatis 实战 xff08 干货 xff09 spring boot
  • 浏览器相关知识点总结

    今天说说浏览器相关问题 xff1a 常见的浏览器内核 xff0c 参见下表 xff1a 浏览器 RunTime内核 xff08 渲染引擎 xff09 JavaScript 引擎ChromeBlink xff08 28 xff09 Webki
  • 图像处理与计算机视觉网址导航

    1常用网站 20条常用网站网址 xff0c 更多点此 Google xff08 gfsoso xff09 直达 计算机视觉网 直达 增强现实资讯 直达 开源中国社区oschina 直达 百度搜索 直达 小木虫 xff0c 学术科研第一站 直
  • 服务器分布式部署和集群部署的区别

    服务器分布式部署和集群部署的区别 1 分布式部署 分布式是以缩短单个任务的执行时间来提升效率的 xff1b 分布式是将不同的业务分布在不同的地方 xff1b 2 集群部署 集群是将几台服务器集中在一起 xff0c 实现同一业务 xff1b
  • Vue知识点:qs

    一 qs是什么 xff1f qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库 可以进行对象与字符串之间的一个转换 二 qs的安装 qs xff0c 是axios中自带的 xff0c 也是npm仓库所管理的包 安装方式 xff1
  • Vue点击按钮跳转页面的实现方法

    1 跳转外部链接并覆盖当前页 lt el button type 61 34 primary 34 64 click 61 34 cimsInputClick 34 gt 应用入口 lt el button gt cimsInputClic
  • 警告C4819 解决办法

    问题 警告C4819 该文件包含不能在当前代码页 936 中表示的字符 请将该文件保存为 Unicode 格式以防止数据丢失 解决办法 1 如果调用的库为C语言 xff0c 增加extern 34 C 34 extern表明变量或函数是ex
  • fopen和fopen_s简介

    1 fopen函数 xff08 1 xff09 定义 FILE fopen const char filename const char mode r 打开只读文件 xff0c 该文件必须存在 r 43 打开可读写的文件 xff0c 该文件
  • 用Photoshop进行icon的制作或将其它格式图片转成icon

    用Photoshop进行icon的制作或将其它格式图片转成icon 1 准备 1 安装的ps格式里没有ico xff0c 需要安装插件 ICOFormat 8bi xff0c 搜索 ICOFormat 8bi 并根据PC选择下载 xff1b
  • dataGridVie控件绑定List<T>数据

    1 实现功能 dataGridVie控件绑定List数据 xff0c 点击按钮更新List数据并重新绑定 xff0c dataGridVie控件的数据更新 2 编程步骤 xff08 1 xff09 定义Person类 span class
  • VS2019安装、卸载及升级程序打包过程

    1 安装打包工具 在VS2019界面点击扩展菜单下的管理扩展 xff0c 如果已安装Microsoft Visual Studio Installer Project xff0c 则如下图所示 如果没有安装则选择联机 xff0c 进行下载安
  • Modbus TCP协议

    1 Modbus协议 Modbus是一种工业总线协议标准 xff0c 包括ASCII RTU TCP三种报文类型 xff0c 其物理层接口有RS 232 RS 485 RS 422 及以太网 xff0c 采用主 从方式进行通信 2 Modb
  • C#文件拷贝的方法

    1 实现功能 xff1a 打开的文件夹如果和目标文件夹不一样 xff0c 则将文件拷贝到目标文件夹 span class token class name span class token keyword string span span
  • WPF控件样式设置

    1 直接在代码中设置 span class token operator lt span span class token class name Button span Content span class token operator 6
  • C#多线程日志的实现

    1 定义输出目标类型 span class token keyword public span span class token keyword enum span span class token class name LogTarget
  • The power input for PSU 2 is lost

    错误信息 Dell戴尔 PowerEdge R720 服务器错误 xff1a PSU0003 Power input for PSU 2 is lost Please check PSU cables 这个错误信息为 xff1a PSU 2
  • 如何保存token-localStorage存储

    1 原理 原理是通过vue router的beforeEach钩子 xff0c 在每次路由到一个地址的时候先判断该路由是否携带了meta信息 xff0c 且该信息中的requireAuth是否为true xff0c 如果为true表示该路由
  • 在Tomcat服务器部署jar包

    在Tomcat服务器部署jar包 1 输出jar包 在eclipse环境下 xff0c 进入Run Configuration界面 xff0c 在Maven Build下选择demo 将Goals的内容改成package 2 将jar包部署
  • PTA 程序设计天梯赛(1~20题)

    文章目录 1 Hello World 5 分 2 打印沙漏 20 分 3 个位数统计 15 分 4 计算摄氏温度 5 分 5 考试座位号 15 分 6 连续因子 20 分 7 A B 20 分 8 计算指数 5 分 9 计算阶乘和 10 分
  • 关于动态(长度不定)结构体数组的两种处理方法

    讲解这个问题 xff0c 以一个例子入手 xff1a PAT xff08 A xff09 1080 Graduate Admission 方法一 xff1a 定义一个结构体数组 xff0c 为该数组开辟一块大的存储空间 xff0c 然后进行