C++|一维数组,二维数组

1 概述

所谓数组,是一个存放了相同类型元素的集合

特点1:数组中每个元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的

2 一维数组

2.1 定义数组

定义一个数组:
1、数据类型 数组名[数组长度];
2、数据类型 数组名[数组长度]={值1,值2……};
3、数据类型 数组名[]={值1,值2,……};

注意1:数组下标从0开始
注意2:在初始化数据时,如果没有全部填写完,会用0来填补剩余数据
注意3:定义数组时必须有一个初始的长度
注意4:数组名的命名规范与变量一致,不要和变量重名

2.2 数组名

用途:
1、统计整个数组在内存中的长度 sizeof(arr)
2、获取数组在内存中的首地址 cout<<arr;

整个数组长度/首地址长度=数组元素个数

#include<iostream>
using namespace std;
#include<math.h>
int main()
{
	int arr[] = { 1,23,4,51,23 };
	int num;
	num = sizeof(arr) / sizeof(arr[0]);
	cout << num << endl;


	system("pause");
	return 0;
}

2.3 练习1:五只小猪称体重

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

#include <iostream>
using namespace std;

int main()
{
	int pig[] = { 100,200,3000,400,500 };
	int max = 0, mid = 0,name;
	for (int i = 0; i < 5; i++)
	{
		mid = pig[i];
		if (max < mid) {
			max = mid;
			name = i+1;
		}
	}
	cout << "最重的是第" << name << "只小猪" << endl;
	cout << "体重为" << max << endl;


}

2.4 练习2:数组元素逆置

描述:
声明一个数组,并将元素逆置。

#include <iostream>
using namespace std;

int main()
{
	int list[] = { 1,2,3,4,5 };
	int num_long = 0, start = 0, end;
	num_long = sizeof(list) / sizeof(list[0]);
	end = num_long - 1;
	int n = num_long / 2, temp;
	cout << n << endl;
	for (int i = 0; i < n; i++)
	{
		temp = list[start];
		list[start] = list[end];
		list[end] = temp;
		start++; end--;
	}
	for (int j = 0; j < num_long; j++)
	{
		cout << list[j];
	}



}

2.5 冒泡排序

1、比较相邻元素,如果第一个比第二个大,交换它俩
2、对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值
3、重复以上步骤,每次比较次数-1,直到不需要排序。

#include <iostream>
using namespace std;

int main()
{
	//冒泡排序
	int list[] = { 0,2,1,4,3 };
	int numlong = sizeof(list) / sizeof(list[0]);
	cout << "排序前:" << endl;
	for (int a = 0; a < numlong; a++)
	{
		cout << list[a] << " ";
	}
	for (int i = 0; i < numlong - 1; i++)//总共循环轮次
	{
		for (int j = 0; j < numlong - i - 1; j++)//对比次数
		{
			if (list[j] < list[j + 1])
			{
				int  temp = 0;
				temp = list[j];
				list[j] = list[j + 1];
				list[j + 1] = temp;
			}

		}
	}
	cout << "排序后:" << endl;
	for (int a = 0; a < numlong; a++)
	{
		cout << list[a] << " ";
	}

}umlong = sizeof(list) / sizeof(list[0]);
	int pknum = numlong - 1;
	do
	{
		for (int i = 0; i < pknum; i++)
		{
			int start = 0, temp = 0;
			if (list[start] <= list[start + 1])
			{
				temp = list[start];
				list[start + 1] = list[start];
				list[start] = temp;
			}
			start++;
		}
		pknum--;
	}while(pknum==0);
	for (int j = 0; j < numlong; j++) {
		cout << list[j] << "\t";
	}

}

3 二维数组

3.1 定义数组

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

第二种定义方式更直观,提高代码可读性

int main()
{
	int arr[2][3] = {1,2,3,4,5,6};
	//外层循环,打印行数
	for (int i = 0; i < 2; i++)
	{
		//内层循环,打印列数
		for (int j = 0; j < 3; j++)
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}

}

3.2数组名称

int arr[2][3]=
{
{1,2,3}
{4,5,6}
};
1、查看占用内存空间大小
总共占用内存sizeof(arr)
第一行占用内存sizeof(arr[0])
第一个内存占用内存sizeof(arr[0][0])
2、查看二维数组首地址(int)arr

3.3考试成绩统计

描述:
请三位同学输入自己的成绩,最终输出三位同学的总成绩。

语文数学英语
A100100100
B9050100
C607080
#include <iostream>
using namespace std;

int main()
{
	int arr[3][3] = {
		{100,100,100},
		{90,50,100},
		{60,70,80}
	};
	for (int i = 0; i < 3; i++)
	{
		int sum = 0;
		for (int j = 0; j < 3; j++)
		{
			sum += arr[i][j];
		}
		cout << sum << endl;
		

	}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值