黑马程序员匠心之作小白学习记录(数组)

/大一小白,B站黑马程序员学习记录(数组)
数组概述
一维数组
二维数组

数组概述
所谓数组,就是一个集合,里面存放了相同类型的数据元素
特点1:数组中的每个数据元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的

一维数组
///一维数组定义形式
1.数据类型 数组名 【数组长度】;
2.数据类型 数组名 【数组长度】={值1、值2……};(未填充默认0)
3.数据类型 数组名【】={值1、值2……};(自动推出数组长度)
数组从下标0开始索引
for循环打印数组

///一维数组数组名
一维数组名称的用途:
1、可以统计整个数组在内存中的长度
2、可以获取数组在内存中的首地址
统计长度:
sizeof(数组名)

/sizeof
sizeof是关键字,是一个运算符,其作用是取得一个对象(数据类型或数据对象的长度)
九大特性(引自CSDN相关博文):
1.sizeof不能求得void类型(后续博文有详尽介绍)的长度;
2.sizeof能求得void类型的指针(指针后续博文有详尽介绍)的长度;
3.sizeof能求得静态分配内存的数组的长度(关于动静态分配内存见后续博文);
4.sizeof不能求得动态分配内存的大小;
5.sizeof不能对大小没有确定的数组求长度;
6.当表达式作为sizeof的操作数时,它返回的是表达式的计算结果的类型大小。且不对表达式求值;
7.sizeof可以对函数调用求大小,并且求得的大小等于返回类型的大小,但是不执行函数体
8.sizeof求得的结构体及其对象(结构体见后续博文)的大小并不等于各个数据成员对象的大小之和;
9.sizeof不能用于求结构体的位域成员的大小,但是可以求得包含位域成员的结构体的大小;

&-------取地址符
&数组名【0】与&数组名等价
注意:数组名是常量,不可进行赋值操作

///一维数组案例1:五只小猪称体重
//描述:在一个数组中记录了五只小猪的体重,找出并打印最重的小猪的体重。

//案例分析
for循环调用一维数组,找出最大值
定义max,更新最大值

//案例实现

#include<iostream>
using namespace std;

int main(){
	int max=0;
	int pig[5];
	for(int i=0;i<5;i++){
		cin>>pig[i];
	}
	for(int i=0;i<5;i++){
		if(pig[i]>max){
			max=pig[i];
		}
	}
	cout<<max<<endl;
	return 0;
}
		

///数组元素逆置

//案例描述:
声明一个数组,实现元素逆置

//案例分析
通过start和end定义首尾位置
注意end=数组总长度减1
创建临时变量temp记录数据
然后首尾互换
if语句确定互换条件

//案例实现

#include<iostream>
using namespace std;

int main(){
	int arr[5];
	for(int i=0;i<5;i++){
		cin>>arr[i];
	}
	int start=0;
	int end=sizeof(arr)/sizeof(arr[0])-1;
	while(start<end){
		int temp=arr[start];
		arr[start]=arr[end];
		arr[end]=temp;
		start++;
		end--;
	}
	for(int i=0;i<5;i++{
		cout<<arr[i]<<endl;
	}
	return 0;
}

///冒泡排序

//作用:最常用的排序算法,对数组内元素进行排序(升序、降序)
1.比较相邻的元素,如果第一个比第二个大,就交换这两个;
2.对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值;
3.重复以上的步骤,每次比较次数-1,直到不需要比较
总排序轮次=元素总数减一
内层循环对比次数=元素个数减去当前轮数再减一

二维数组(矩阵)

///二维数组的定义方式
1.数据类型 数组名【行数】【列数】;
2.数据类型 数组名【行数】【列数】={{数据1,数据2},{数据3,数据4}……}
3.数据类型 数组名【行数】【列数】={数据1,数据2,数据3,数据4……};
4.数据类型 数组名【】【列数】={数据1,数据2,数据3,数据4……};
推荐使用第二种

///二维数组数组名
查看二维数组所占内存空间
获取二维数组首地址

///二维数组应用案例——考试成绩统计

//案例描述
有三名同学(张三、李四、王五),在一次考试中的成绩如下,请分别输出三名同学的总成绩

语文数学英语
张三100100100
李四9050100
王五607080

//案例分析
1.利用二维数组保存三人成绩
2、统计总成绩(嵌套循环)
3.输出

//案例实现

#include<iostream>
#include<string>
using namespace std;

int main(){
	int scores[3][3]={
		{100,100,100},
		{90,50,100},
		{60,70,80}
	};
	string names[3]={
		{"张三"},{"李四"},{"王五"}
	};
	forint i=0;i<3;i++){
		int sum=0;
		for(int j=0;j<3;j++){
			sum+=scores[i][j];
		}
		cout<<names[i]<<sum<<endl;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值