03-数组

目录

数组特点:

一、一维数组

1.定义的三种方式

2.数组名

案例-五只小猪称体重

案例-数组元素逆置

3.冒泡排序

案例-将数组中指定的数据删除

二、二维数组

1.定义的四种方式

2.数组名


数组:一个集合,存放相同类型的数据元素

数组特点:

  • 数组中每个数据元素都是相同的数据类型
  • 数组是由连续的内存位置组成的

一、一维数组

1.定义的三种方式

数据类型  数组名[ 数组长度 ];

数据类型  数组名[ 数组长度 ] = { 值1,值2 … };

数据类型  数组名[   ] = { 值1,值2 … };

2.数组名

数组名是常量,不可以进行赋值操作。 

用途: 

  • 可以统计整个数组在内存中的长度
  • 可以获取数组在内存中的首地址
#include<iostream>
using namespace std;


int main(){

	int arr[10]={1,2,3,4,5,6,7,8,9,10};
	cout<<"整个数组占用内存空间为:"<<sizeof(arr)<<endl;
	cout<<"每个元素占用内存空间为:"<<sizeof(arr[0])<<endl;
	cout<<"数组中元素个数"<<sizeof(arr)/sizeof(arr[0])<<endl;

	cout<<"数组首地址为:"<<(int)arr<<endl;
	cout<<"数组中第一个元素地址为:"<<(int)&arr[0]<<endl;
	cout<<"数组中第二个元素地址为:"<<(int)&arr[1]<<endl;


	/*结果:
		整个数组占用内存空间为:40
		每个元素占用内存空间为:4
		数组中元素个数10
		数组首地址为:16317284
		数组中第一个元素地址为:16317284
		数组中第二个元素地址为:16317288
	*/

	return 0;
}

案例-五只小猪称体重

#include<iostream>
using namespace std;

//在一个数字中记录了五只小猪的体重,如:int arr[5]={300,350,200,400,250};
//找出并打印最重的小猪体重。

int main()
{
	int arr[5] = {300,350,200,400,250};
	int max = arr[0];
	for(int i = 0;i < 5;i++)
	{
		if(arr[i]>max)
			max = arr[i];
	
	}
	cout<<"最重的小猪是:"<<max<<endl;

}

案例-数组元素逆置

#include<iostream>
using namespace std;

//请声明一个5个元素的数组,并且将元素逆置

int main()
{
	int arr[]={1,3,2,5,4};
	int arr2[5];
	for(int i = 4;i >= 0;i--)
	{
		arr2[4-i]=arr[i];
	
	}
	for(int j = 0;j < 5;j++)
	{
	    cout<<arr2[j]<<'\t';
	}

system("pause");
return 0;

}

3.冒泡排序

  • 比较相邻元素,进行交换
  • 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值
  • 重复步骤,每次比较次数减一,直到不需要比较

#include<iostream>
using namespace std;

//将 10个数 由小到大排序

int main(){

	int a[10];
	int i,j,t;
	cout<<"Input ten number:"<<endl;
	for(i=0;i<10;i++)
		cin>>a[i];
	for(i=0;i<9;i++)

	//10个数,比9趟

	{
		for(j=0;j<9-i;j++)

		//第一趟,比9次;第二趟,比8次……

			if(a[j]>a[j+1])
			{
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
			}
	}
	//输出
	for(i=0;i<10;i++)	
		cout<<a[i]<<'\t';

	return 0;
}

案例-将数组中指定的数据删除

 

#include<iostream>
using namespace std;

//将数组中指定的数据删除

int main(){

	int a[6]={1,3,5,7,9,11},i,j,k;
	cout<<"原数组为:"<<endl;
		for(i=0;i<6;i++)
			cout<<a[i]<<'\t';
	cout<<"\n请输入需要删除的数据:"<<endl;
	cin>>k;
	for(i=0;i<6;i++)
	{	
		if(a[i]==k)
		{	for(j=i;j<5;j++)
			a[j]=a[j+1];
			break; //覆盖完数据后退出循环
		}
	}
	//不是从break跳出循环,说明没有找到删除点
	if(i==6)
		cout<<"数组中没有要删除的数据\n";
	else
	{
		cout<<"删除数据"<<k<<"后的数组为:\n";
		for(i=0;i<5;i++)
			cout<<a[i]<<'\t';
	}


	return 0;
}

二、二维数组

1.定义的四种方式

数据类型 数组名[ 行数 ][ 列数 ];

数据类型 数组名[ 行数 ][ 列数 ] = { { 数据1,数据2 },{ 数据3,数据4 } };

数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4 };

数据类型 数组名[         ][ 列数 ] = { 数据1,数据2,数据3,数据4 };

2.数组名

  • 查看二维数组所占内存空间
  • 获取二维数组首地址
#include<iostream>
using namespace std;


int main(){

	int arr[2][3] = 
	{
		{1,2,3},
		{4,5,6}
	};
	cout<<"二维数组占用内存空间为:"<<sizeof(arr)<<endl;
	cout<<"二维数组第一行占用内存为:"<<sizeof(arr[0])<<endl;
	cout<<"二维数组第一个元素占用内存为:"<<sizeof(arr[0][0])<<endl;
	cout<<"二维数组行数为:"<<sizeof(arr)/sizeof(arr[0])<<endl;
	cout<<"二维数组列数为:"<<sizeof(arr[0])/sizeof(arr[0][0])<<endl;

	cout<<"二维数组首地址为:"<<(int)arr<<endl;
	cout<<"二维数组第一行首地址为:"<<(int)arr[0]<<endl;
	cout<<"二维数组第二行首地址为:"<<(int)arr[1]<<endl;
	cout<<"二维数组第一个元素首地址为:"<<(int)&arr[0][0]<<endl;
	//访问具体元素要用取址符&

	/*结果:
	二维数组占用内存空间为:24
	二维数组第一行占用内存为:12
	二维数组第一个元素占用内存为:4
	二维数组行数为:2
	二维数组列数为:3
	二维数组首地址为:7339400
	二维数组第一行首地址为:7339400
	二维数组第二行首地址为:7339412
	二维数组第一个元素首地址为:7339400
	*/

	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

biank trrrry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值