当前位置: 首页 > 编程日记 > 正文

【C++】【一】结构体数组

demo7:函数份文件编写

swap.h

#include <iostream>
using namespace std;//函数的声明
void swap(int a, int b);

swap.cpp

#include "swap.h"//函数的定义
void swap(int a, int b)
{int temp = a;a = b;b = temp;cout << "a = " << a << endl;cout << "b = " << b << endl;
}

main函数

#include<iostream>
using namespace std;
#include "swap.h"//函数的分文件编写
//实现两个数字进行交换的函数函数的声明
//void swap(int a, int b);
函数的定义
//void swap(int a, int b)
//{
//	int temp = a;
//	a = b; 
//	b = temp;
//
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//}//1、创建.h后缀名的头文件
//2、创建.cpp后缀名的源文件
//3、在头文件中写函数的声明
//4、在源文件中写函数的定义int main() {int a = 10;int b = 20;swap(a, b);system("pause");return 0;
}

demo6:形参不改变 ,当我们做值传递的时候,函数的形参发生改变,并不会影响实参

#include<iostream>
using namespace std;//值传递
//定义函数,实现两个数字进行交换函数//如果函数不需要返回值,声明的时候可以写void
void swap3(int num1, int num2)
{cout << "交换前: " << endl;cout << "num1 = " << num1 << endl;cout << "num2 = " << num2 << endl;int temp = num1;num1 = num2;num2 = temp;cout << "交换后: " << endl;cout << "num1 = " << num1 << endl;cout << "num2 = " << num2 << endl;//return; 返回值不需要的时候,可以不写return
}int main() {int a = 10;int b = 20;cout << "a = " << a << endl;cout << "b = " << b << endl;//当我们做值传递的时候,函数的形参发生改变,并不会影响实参swap3(a, b);cout << "a = " << a << endl;cout << "b = " << b << endl;system("pause");return 0;
}

demo5:结构体中const: 将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来

#include<iostream>
using namespace std;
#include <string>//const的使用场景struct student
{//姓名string name;//年龄int age;//分数int score;
};//将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来
void printStudents(const student *s)
{//s->age = 150; //加入const之后,一旦有修改的操作就会报错,可以防止我们的误操作cout << "姓名: " << s->name << " 年龄: " << s->age << " 得分: " << s->score << endl;
}int main() {//创建结构体变量struct student s = { "张三" , 15 , 70 };//通过函数打印结构体变量信息printStudents(&s);cout << "main中张三年龄为: " << s.age << endl;system("pause");return 0;
}

demo4:结构体做参数(值传递和地址传递)

#include<iostream>
using namespace std;
#include <string>//定义学生结构体
struct student
{//姓名string name;//年龄int age;//分数int score;
};//打印学生信息函数
//1、值传递
void printStudent1(struct student s)
{s.age = 100;cout << "子函数中 姓名: " << s.name << " 年龄: " << s.age << " 分数: " << s.score << endl;
}//2、地址传递
void printStudent2(struct student * p)
{p->age = 200;cout << "子函数2中 姓名:" << p->name << " 年龄: " << p->age << " 分数:" << p->score << endl;}int main() {//结构体做函数参数//将学生传入到一个参数中,打印学生身上的所有信息//创建结构体变量struct student s;s.name = "张三";s.age = 20;s.score = 85;//printStudent1(s);printStudent2(&s);cout << "main函数中打印 姓名: " << s.name << " 年龄: " << s.age << " 分数:" << s.score << endl;system("pause");return 0;
}

demo3:结构体指针;使用一个指针接受结构体对象,类似与数组的声明    //通过结构体指针 访问结构体中的属性,需要利用 ' -> '

#include<iostream>
using namespace std;
#include <string>//结构体指针//定义学生结构体
struct stu
{string name;  //姓名int age;   //年龄int score; //分数
};int main() {//1、创建学生结构体变量stu s = { "张三" , 18 , 100 };//2、通过指针指向结构体变量stu * p = &s;//3、通过指针访问结构体变量中的数据//通过结构体指针 访问结构体中的属性,需要利用 ' -> 'cout << "姓名: " << p->name << " 年龄: " << p->age << " 分数: " << p->score << endl;system("pause");return 0;
}

demo2:结构体数组复制,替换stuArray[2]覆盖原始值,重新计算得到新值赋值

#include<iostream>
using namespace std;
#include <string>//结构体数组
//1、定义结构体
struct Student
{//姓名string name;//年龄int age;//分数int score;
};int main() {//2、创建结构体数组struct Student stuArray[3] ={{ "张三", 18 , 100 },{ "李四",28 , 99 },{ "王五",38 , 66 }};//3、给结构体数组中的元素赋值stuArray[2].name = "赵六";stuArray[2].age = 80;stuArray[2].score = 60;//4、遍历结构体数组for (int i = 0; i < 3; i++){cout << " 姓名: " << stuArray[i].name<< " 年龄: " << stuArray[i].age<< " 分数: " << stuArray[i].score << endl;}system("pause");return 0;
}

demo1(结构体嵌套,结构体数组做参数):教师结构体:包含教师的学生,姓名;学生结构体包含:学生姓名分数。注:结构体有交叉。

#include<iostream>
using namespace std;
#include <string>
#include <ctime>//学生的结构体
struct Student
{//姓名string sName;//分数int score;
};//老师的结构体定义
struct Teacher
{//姓名string tName;//学生数组struct Student sArray[5];
};//给老师和学生赋值的函数
void allocateSpace(struct Teacher tArray[], int len)
{string nameSeed = "ABCDE";//给老师开始赋值for (int i = 0; i < len; i++){tArray[i].tName = "Teacher_";tArray[i].tName += nameSeed[i];//通过循环给每名老师所带的学生赋值for (int j = 0; j < 5; j++){tArray[i].sArray[j].sName = "Student_";tArray[i].sArray[j].sName += nameSeed[j];int random = rand() % 61 + 40; // 40 ~ 100tArray[i].sArray[j].score = random;}}
}//打印所有信息
void printInfo(struct Teacher tArray[], int len)
{for (int i = 0; i < len; i++){cout << "老师姓名: " << tArray[i].tName << endl;for (int j = 0; j < 5; j++){cout << "\t学生姓名: " << tArray[i].sArray[j].sName <<" 考试分数: " << tArray[i].sArray[j].score << endl;}}
}int main() {//随机数种子srand((unsigned int)time(NULL));//1、创建3名老师的数组struct Teacher tArray[3];//2、通过函数给3名老师的信息赋值,并给老师带的学生信息赋值int len = sizeof(tArray) / sizeof(tArray[0]);allocateSpace(tArray, len);//3、打印所有老师及所带的学生信息printInfo(tArray, len);system("pause");return 0;
}

demo0: 游戏英雄(结构体)编程练习。使用冒泡排序,年龄升序排列。

#include<iostream>
using namespace std;
#include <string>//1、设计英雄结构体
//英雄结构体
struct Hero
{//姓名string name;//年龄int age;//性别string sex;
};//冒泡排序 实现年龄升序排列
void bubbleSort(struct Hero heroArray[], int len)
{for (int i = 0; i < len - 1; i++){for (int j = 0; j < len - i - 1; j++){//如果j 下标的元素年龄 大于 j+1下标的元素的年龄 ,交换两个元素if (heroArray[j].age > heroArray[j + 1].age){struct Hero temp = heroArray[j];heroArray[j] = heroArray[j + 1];heroArray[j + 1] = temp;}}}
}//打印排序后数组中的信息
void printHero(struct Hero heroArray[], int len)
{for (int i = 0; i < len; i++){cout << "姓名: " << heroArray[i].name << " 年龄: " << heroArray[i].age<< " 性别: " << heroArray[i].sex << endl;}}int main() {//2、创建数组存放5名英雄struct Hero heroArray[5] ={{ "刘备",23,"男" },{ "关羽",22,"男" },{ "张飞",20,"男" },{ "赵云",21,"男" },{ "貂蝉",19,"女" },};int len = sizeof(heroArray) / sizeof(heroArray[0]);cout << "排序前打印: " << endl;for (int i = 0; i < len; i++){cout << "姓名: " << heroArray[i].name << " 年龄: " << heroArray[i].age<< " 性别: " << heroArray[i].sex << endl;}//3、对数组进行排序,按照年龄进行升序排序bubbleSort(heroArray, len);cout << "排序后打印: " << endl;//4、将排序后结果打印输出printHero(heroArray, len);system("pause");return 0;
}

相关文章:

Message、Handler、Message Queue、Looper之间的关系

2019独角兽企业重金招聘Python工程师标准>>> 在单线程模型下&#xff0c;为了解决线程通信问题&#xff0c;Android设计了一个通信机制。Message Queue(消息队列)&#xff0c; 线程间的通信可以通过Message Queue、Handler和Looper进行信息交换。下面将对它们进行逐…

在linux中只将“桌面”修改成“Desktop”而系统仍然使用中文

在安装好centos系统以后&#xff0c;它的Desktop&#xff0c;Downloads等文件夹都是中文的&#xff0c;桌面&#xff0c;下载等&#xff0c;这样在使用cd命令时特别不方便 解决方法一&#xff1a;下载一个中文输入法&#xff0c;安装 解决方法二&#xff1a; 修改il8n文件&a…

Zabbix 3.0 从入门到精通(zabbix使用详解)

第1章 zabbix监控 1.1 为什么要监控 在需要的时刻&#xff0c;提前提醒我们服务器出问题了 当出问题之后&#xff0c;可以找到问题的根源 网站/服务器 的可用性 1.1.1 网站可用性 在软件系统的高可靠性&#xff08;也称为可用性&#xff0c;英文描述为HA&#xff0c;High Avail…

MacBook如何用Parallels Desktop安装windows7/8

虽然MacBook真的很好用&#xff0c;不过在天朝的国情下&#xff0c;有很多软件还是仅支持IE和windows系统下才有。所以有必要为自己的MacBook装一个windows版本的系统&#xff0c;之前试过用Boot Camp来建立分区和安装win7&#xff0c;之后自己又用Parallels Desktop安装过win8…

在IDEA 中为Maven 配置阿里云镜像源

打开IntelliJ IDEA->Settings ->Build, Execution, Deployment -> Build Tools > Maven 注意要勾选上override 自己创建一个settings.xml文件&#xff0c; 内容如下 <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http:/…

【匹配算法】渐进一致采样 PROSAC(PROgressive SAmple Consensus)

方法简介 渐进一致采样法1 (PROSAC) 是对经典的 RANSAC2 中采样的一种优化。相比经典的 RANSAC 方法均匀地从整个集合中采样&#xff0c;PROSAC 方法是从不断增大的最佳对应点集合中进行采样的。所以这种方法可以节省计算量&#xff0c;提高运行速度。 论文&#xff1a;https:…

阿里巴巴开源的 Blink 实时计算框架真香

Blink 开源了有一段时间了&#xff0c;竟然没发现有人写相关的博客&#xff0c;其实我已经在我的知识星球里开始写了&#xff0c;今天来看看 Blink 为什么香&#xff1f; 我们先看看 Blink 黑色版本&#xff1a; 对比下 Flink 版本你就知道黑色版本多好看了。 你上传 jar 包的时…

【地图API】收货地址详解2

上次讲解的方法是&#xff1a; 在地图中心点添加一个标注&#xff0c;每次拖动地图就获取地图中心点&#xff0c;再把标注的位置设置为地图中心点。可参考教程&#xff1a;http://www.cnblogs.com/milkmap/p/6126424.html 可能有开发者觉得&#xff0c;这个算法会有“延时”&am…

MATLAB【十三】————仿真函数记录以及matlab变成小结

part one&#xff1a;matlab 编程小结。 1.char 与string的区别&#xff0c;char使用的单引号 ‘’ &#xff0c;string使用的是双引号“”。 2.一般标题中的输出一定要通过 num2str 处理&#xff0c;画图具体的图像细节参考&#xff1a;https://blog.csdn.net/Darlingqiang/ar…

IDEA HDFS客户端准备

在此之前&#xff1a;先进行在IDEA 中为Maven 配置阿里云镜像源 1、将资料包中的压缩包解压到一个没有中文的目录下 2、配置HADOOP_HOME环境变量 3、配置Path环境变量 4、创建一个Maven工程HDFSClientDemo 5、在pom.xml中添加依赖 <dependencies><dependency><g…

12 Java面向对象之多态

JavaSE 基础之十二12 Java面向对象之多态 ① 多态的概念及分类 多态的概念&#xff1a;对象的多种表现形式和能力多态的分类  1. 静态多态&#xff1a;在编译期间&#xff0c;程序就能决定调用哪个方法。方法的重载就表现出了静态多态。  2. 动态多态&#xff1a;在程序运行…

MATLAB【十四】————遍历三层文件夹操作

文件夹遍历 clear; clc; close all;%% crop the im into 256*256 num 0; %% num1 内缩3个像素 num 2 内缩6个像素 load(qualitydata1.mat) load(qualitydata2.mat)[data1_m,data1_n] size(qualitydata1); [data2_m,data2_n] size(qualitydata2);%% read image_name …

LoadRunner监控Linux

有的linux机器上安装rpc后会保存如下&#xff1a; test -z "/usr/local/sbin" || mkdir -p -- . "/usr/local/sbin"/bin/install -c rpc.rstatd /usr/local/sbin/rpc.rstatd make[2]: Nothing to be done for install-data-am. make[2]: Leaving directory…

scala while循环中断

Scala内置控制结构特地去掉了break和continue&#xff0c;是为了更好的适应函数化编程&#xff0c;推荐使用函数式的风格解决break和contine的功能&#xff0c;而不是一个关键字。 如何实现continue的效果 Scala内置控制结构特地也去掉了continue&#xff0c;是为了更好的适应…

05-04-查看补丁更新报告

《系统工程师实战培训》 -05-部署补丁管理服务器 -04-查看补丁更新报告 作者&#xff1a;学 无 止 境QQ交流群&#xff1a;454544014///安装报表工具&#xff08;在100-Admin01上面安装如下工具&#xff0c;方便查看WSUS更新补丁报告!&#xff09;Microsoft System CLR Types f…

ISP【三】———— raw读取、不同格式图片差异

part zero: 如何处理.raw格式数据&#xff0c;读取和转化 matlab读取raw图 &#xff08;mark读取图片尺寸和位数均可设置&#xff0c;图片尺寸M,N&#xff0c;图片数据类型8bit,16bit改成uint16&#xff09; clear; clc; close all; % % rotpath imread(D:\matlab\ncc_ive…

深度学习 - 相关名词概念

2019独角兽企业重金招聘Python工程师标准>>> Neural Network 神经网络 Weights 权重 Bias 偏移 Activation Function 激活函数, 用于调整每个神经的输出, 有如下几个常用的函数种类 ReLU Sigmoid Optimizer 优化器 Adam Input Layer, Hidden Layer, Output Layer 输…

HDFS的API操作

准备工作&#xff1a;IDEA > HDFS客户端准备 目录 文件上传 文件下载 文件夹删除 修改文件名称 查看文件详情 文件和文件夹的判断 完整代码 文件上传 注意conf.set("dfs.replication","2");的位置&#xff0c;位置不一样&#xff0c;设置的副本…

微信小程序-锚点定位+内容滑动控制导航选中

之前两篇文章分别介绍了锚点定位和滑动内容影响导航选中&#xff0c;这里我们就结合起来&#xff0c;实现这两个功能&#xff01; 思路不再多说&#xff0c;直接上干货&#xff01; WXML <view class"navigateBox"><view class"title"><ima…

MATLAB【十四】————调用深度库生成exe,批量运行三层文件夹下图片,保存结果

运行路径&#xff1a;D:\matlab\cmd_batch_processing 文件夹架构&#xff1a; clear; clc; close all;%% crop the im into 256*256oriDataPath D:\matlab\cmd_batch_processing\data\; targetPathOri D:\matlab\cmd_batch_processing\result\;report_path D:\matlab\cm…

JDK1.8学习

2019独角兽企业重金招聘Python工程师标准>>> List<OrderGoodsDetail> olist BeanMapper.mapList(list,OrderGoodsDetail.class);List<String> list2 Arrays.asList("123", "45634", "7892", "abch", "s…

HDFS的数据流

目录 HDFS写数据流程 剖析文件写入 网络拓扑-节点距离计算 机架感知&#xff08;副本存储节点选择&#xff09; Hadoop2.7.2 副本节点选择 HDFS读数据流程 HDFS写数据流程 剖析文件写入 1&#xff09;客户端通过Distributed FileSystem模块向NameNode请求上传文件&#x…

Js----闭包

1、闭包的概念&#xff1a;(我找了很多&#xff0c;看大家的理解) A:闭包是指可以包含自由&#xff08;未绑定到特定对象&#xff09;变量的代码块&#xff1b; 这些变量不是在这个代码块内或者任何全局上下文中定义的&#xff0c;而是在定义代码块的环境中定义&#xff08;局部…

【C++】【四】企业链表

// 企业链表.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // 链表改进版 企业常用#include <iostream> #include<stdlib.h>//链表小节点 不包含数据域 typedef struct linknode {struct linknode* next; }linknode; //链表节点 数据指…

GoldenGate的Logdump工具使用简介

Logdump工具是GoldenGate提供的一个用于查询、分析、过滤、查看和保存存储在trail文件或extract文件中的数据的工具。1、启动Logdump工具[oraclerhel6 ~]$ cd /ogg [oraclerhel6 ogg]$ ./logdumpOracle GoldenGate Log File Dump Utility for Oracle Version 12.2.0.1.1 OGGCOR…

scala惰性函数

惰性计算&#xff08;尽可能延迟表达式求值&#xff09;是许多函数式编程语言的特性。惰性集合在需要时提供其元素&#xff0c;无需预先计算它们&#xff0c;这带来了一些好处。首先&#xff0c;您可以将耗时的计算推迟到绝对需要的时候。其次&#xff0c;您可以创造无限个集合…

计算机组成原理-第3章-3.1

|--总线&#xff1a;本质上就是一组连线&#xff0c;通路 |--发展过程&#xff1a; 分散连接时代&#xff1a; 运算器为中心 ↓ 存储器为中心 ↓ 中断&#xff0c;DMA的出现修正 ↓ 依旧无法解决效率问题 总线连接时代&#xff1a; 以CPU为核心&#xff0c;双总线&#xff1a;M…

【C++】【三】单向链表

// 单向链表.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream> #include<stdlib.h>typedef struct LINKNODE {void* data;struct LINKNODE* next; }linknode;typedef struct LINKLIST {LINKNODE* head;int size; }lin…

gulp相关说明

1.当你按下ctrls 或切换到浏览器&#xff0c;浏览器将会会自动刷新 如果你修改的是html文件将会刷新网页如果你修改的是css或less&#xff0c;这个less文件或css文件将会被重载而不是刷新整个页面&#xff08;这个特性在写单页面应用时尤为实用&#xff09;2.模板引入 考虑以下…

IDEA中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

问题描述&#xff1a; 运行Java Web项目时&#xff0c;IDEA中提示&#xff1a;Warning:java: 源值1.5已过时, 将在未来所有发行版中删除解决方法&#xff1a; 1. 打开【File】—【Project Structure】&#xff0c;找到以下两个地方&#xff1a; Project Structure->Proje…