目录
1.1概述
1.2一维数组
1.3二维数组
数组就是一个集合,里面存放了相同类型的数据元素。
特点1:数组中的每个数据元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
数组下标从0开始
定义的方式:
1.数组类型 数组名[数组长度];---eg:int arr[5];arr[0]=10;arr[1]=20;.....各个赋值
2.数据类型 数组名[数组长度]={值1,值2,……};---eg:int arr[5]={10,20,30,40,50};
3.数组类型 数组名[ ]={值1,值2,……};---eg:int arr[]={10,20,30,40,50};
注意:定义数组的时候,必须要有初识长度。
一维数组名的用途:
1.可以统计整个数组在内存中的长度
sizeof(arr)-->指整个数组的长度,sizeof(arr[0])-->指单个元素所占用的长度,sizeof(arr)/sizeof(arr[0])-->可以得到整个数组元素个数
2.可以通过数组名查看数组在内存中的首地址
eg:arr----就是十六进制下数组首地址
&arr[0]----就是十六进制下数组首元素的地址(与上面是一样的)
注意:数组名是一个常量,不可以重新赋值
案例:五只小猪称体重:在一个数组中记录五只小猪的体重并找出最重的并打印,eg:int arr[5]={300,350,200,400,250};
int main() { int arr[] = {200,300,250,350,400}; int max = arr[0]; for (int i = 0; i < 5; i++) { if (max < arr[i]) max = arr[i]; } cout << "五只小猪中最大的是:"<<max<< endl; system("pause"); return 0; }
冒泡排序:
下面是由小到大排序
1.比较相邻的元素,如果第一个比第二个大,就交换二者。(一次)
2.对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大的值。(一趟)
3.重复以上,每次比较次数减一,直到不需要比较。
趟数=个数-1,次数=个数-趟数-1
int main() { int arr[] = {4,2,8,0,5,7,1,3,9}; cout << "原来的数组:" <<endl; for (int i = 0; i < 9; i++) { cout << arr[i] << " "; } cout << endl; for (int i = 0; i < 9 - 1; i++)//趟 { for (int j = 0; j < 9 - i - 1; j++)//次 { if (arr[j]>arr[j + 1])//大的往后走 { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } cout << "排序后的数组:" << endl; for (int i = 0; i < 9; i++) { cout << arr[i] << " "; } cout << endl; system("pause"); return 0; }
二维数组就是在一维数组上加了一个维度
定义方式:1.数据类型 数组名[行][列];eg:int arr[2][3];arr[0][0]=1;arr[0][1]=2;.....各个赋值
2.数据类型 数组名[行][列]={{数1,数2},{数3,数4}};eg:int arr[2][3]={{1,2,3},{4,5,6}};
3.数据类型 数组名[行][列]={数1,数2,数3,数4};eg:int arr[2][3]={1,2,3,4,5,6};
4.数据类型 数组名[ ][列]={数1,数2,数3,数4};eg:int arr[][3]={1,2,3,4,5,6};
注意:书写时可以省去行数但不能省去列数
二维数组名用途:
1.查看二维数组所占空间
sizeof(arr)---整个数组的长度,sizeof(arr[0])---指第0行元素所占的长度,sizeof(arr[0][0])---指第一个元素所占的长度,sizeof(arr)/sizeof(arr[0])---指行数,sizeof(arr[0])/sizeof(arr[0][0])---指列数
2.获取二维数组首地址
arr---指十六进制的二维数组首地址,arr[0]---指十六进制的第一行首地址,&arr[0][0]---指十六进制的第一个元素的首地址
案例:考试成绩统计:张三 语文:100 数学:100 英语:100
李四 语文:90 数学:50 英语:100
王五 语文:60 数学:70 英语:80
#include<iostream> using namespace std; #include<string> int main() { int arr[3][3] = { { 100, 100, 100 }, { 90, 50, 100 }, {60,70,80} }; string name[3] = { "张三", "李四", "王五" }; for (int i = 0; i < 3; i++)//打印三人的成绩 { for (int j = 0; j < 3; j++) { cout << arr[i][j] << " "; } cout << endl; } for (int i = 0; i < 3; i++)//打印三人的总分 { int sum = 0; for (int j = 0; j < 3; j++) { sum += arr[i][j]; } cout << name[i] << "的总分为:" << sum<< endl; } system("pause"); return 0; }