目录
4.1 一维数值数组
4.1.1 一维数值数组的概述
用一段
连续空间
存放
相同类型
的变量
这样的容器(结构)叫数组。(重要)
数组的下标是从
0
开始。
假如数组有
n
个元素:
下标范围:
0~n-1
元素范围:
arr[0]~arr[n-1]
案例
1
:以下对
int arr[5]
的
数组元素
访问正确的是:
A
A:arr[1] B:arr+1 C:arr[5] D:arr
4.1.2 一维数值数组的定义
1
、定义数组的步骤:
数组名 和
[]
表示数组
将数组的个数 放入
[]
里面
用元素的类型 定义一个变量
从上 往下 替换。
案例
1
:定义一个数组 有
5
个元素 每个元素为
int
int arr[5];
案例
2
:定义一个数组 有
5
个元素 每个元素为
int *
int *arr[5];
案例
3
:定义一个数组 有
5
个元素 每个元素为数组,该数组有
10
个元素每个元素为
int
int arr[5] [10];
案例
4
:定义一个数组 有
5
个元素 每个元素为函数的入口地址,该函数有两个
int
型形参,
int
返回值类型
int (*arr[5])(int, int);
不管几维:数值数组 必须逐个元素访问。
int arr[5];
int n = sizeof(arr)/sizeof(arr[0]);
int i=0;
for(i=0;i<n;i++)
{
cout<<arr[i]<<" ";//未初始化的局部数组元素 内部不确定
}
cout<<endl;
4.1.3 一维数值数组的初始化
1
、全部元素 初始化
int arr[5]={10,20,30,40,50};
注意:如果数组的全部元素 都初始化 可以省略
[]
的数值
如果省略了
[]
里面数值
数组的元素个数
就由初始化的元素个数确定
int arr[]={10,20,30,40,50};
2
、部分元素 初始化
未被初始化的部分 自动补
0
int arr[5]={10,20,30};//10 20 30 0 0
3、建议将数组的所有元素初始化为0
int arr[5]={0};//将第0个元素初始化为0 其他未被初始化自动补0 推荐
int arr[5]={10};//10 0 0 0 0
4
、指定下标初始化
int arr[5]={[2]=10, [4]=30};//0 0 10 0 30
4.1.3
一维数值数组的元素操作
1
、元素的操作
对元素的读或写
必须逐个元素操作
数组的每个元素
等价于 变量。
arr[1] == num
int arr[5]={0};
int n = sizeof(arr)/sizeof(arr[0]);
//num取值
cout<<arr[2]<<endl;
//num赋值 num=10
arr[2] = 10;
//data = num
arr[3] = arr[2];
//num++
arr[3]++;//arr[3] = arr[3]+1
int i=0;
for(i=0;i<n;i++)
{
cout<<arr[i]<<" ";//0 0 10 11 0
}
cout<<endl;
2
、键盘给数组元素获取输入
int arr[5]={0};
int n = sizeof(arr)/sizeof(arr[0]);
cout<<"请输入"<<n<<"个int数值:";
int i=0;
for(i=0;i<n;i++)
{
cin>>arr[i];
}
for(i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
3、案例1:键盘输入10个int数 求这10个数的最大值和最小值
int arr[10]={0};
int n = sizeof(arr)/sizeof(arr[0]);
//获取键盘输入
cout<<"请输入"<<n<<"个int数值:";
int i=0;
for(i=0;i<n;i++)
{
cin>>arr[i];
}
//求最大值和最小值
int min=arr[0],max=arr[0];
for(i=1;i<n;i++)
{
//进行比较
max = max>arr[i]?max:arr[i];
min = min<arr[i]?min:arr[i];
}
cout<<"min="<<min<<" max="<<max<<endl;
4.2 二维数值数组
4.2.1 二维数值数组的概述
4.2.2 二维数值数组的初始化
1
、分段初始化
//完全初始化
int arr[3][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
//如果完全初始化 只能省略行数
int arr[][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
//部分初始化
int arr[3][4]={ {1,2}, {5,6}, {9,10,11} };
2
、连续初始化
/完全初始化
int arr[3][4]={ 1,2,3,4, 5,6,7,8, 9,10,11,12};
//如果完全初始化 只能省略行数
int arr[][4]={1,2,3,4, 5,6,7,8, 9,10,11,12};
//部分初始化
int arr[3][4]={ 1,2, 5,6, 9,10,11};
案例
1
:以下代码的结果是
__ 11 __
int arr1[3][4]={ {1,2}, {5,6}, {9,10,11} };
int arr2[3][4]={ 1,2, 5,6, 9,10,11};
arr1[1][2] +arr2[1][2] == 11
4.2.3 二维数值数组的元素操作
1
、二维数值数组 获取键盘输入
nt arr[3][4]={0};
int row = sizeof(arr)/sizeof(arr[0]);
int col = sizeof(arr[0])/sizeof(arr[0][0]);
int i=0,j=0;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
cin>>arr[i][j];
}
}
cout<<"------------"<<endl;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
2
、求出每个人的平均成绩
![](https://img-blog.csdnimg.cn/direct/6de8aa4056d24426a82494905c482c60.png)
int arr[5][4]={{56,75,78,89},{89,98,76,67},{88,99,77,66},{67,78,89,90},
{98,97,96,95}};
int row = sizeof(arr)/sizeof(arr[0]);
int col = sizeof(arr[0])/sizeof(arr[0][0]);
float scoreAvg[5]={0.0f};
int i=0;
for(i=0;i<row;i++)
{
//求和
int j=0;
float sum = 0;
for(j=0;j<col;j++)
{
sum += arr[i][j];
}
//求平均成绩
scoreAvg[i] = sum/col;
}
for(i=0;i<row;i++)
{
cout<<scoreAvg[i]<<" ";
}
cout<<endl;
4.3 一维字符数组
4.3.1 一维字符数组的初始化
1
、逐个元素初始化(不推荐)
char arr[5]={'h','e','l','l','o'};
2
、以字符串的方式 初始化 一维字符数组(推荐)
""
描述的是字符串, 比如字符串
"hello",
编译器会自动在字符串的末尾 添加
'\0'
字符 作为字符串的结束标
记
char arr[6]="hello";
3
、以上两种初始化的区别
![](https://img-blog.csdnimg.cn/direct/98166e9fb77a456586423b1e50faa9e4.png)
4.3.2 字符数组的遍历
使用循环方式逐个遍历(逐个字符操作)
char arr[6]="hello";
int i=0;
for(i=0;i<6;i++)
{
cout<<arr[i];
}
使用
cout
直接输出字符串,需要字符数组的数组名,遇到
'\0'
才结束。
(
遍历字符串
)
char arr1[]="hello";
cout<<arr1;//hello
char arr2[]="hel\0lo";
cout<<arr2;//hel
4.3.3 键盘获取字符串
1
、
cin
获取字符串
遇到空格或回车 结束输入
![](https://img-blog.csdnimg.cn/direct/d46d31fd2170405fa42a560edd8a28e8.png)
2、cin.getline获取带空格的 字符串
4.3.4
一维字符数组的案例
1
、获取一个字符串 求该字符串的长度(不使用
strlen
)
char str[32]="";
cout<<"请输入一个字符串:";
cin.getline(str,sizeof(str));
//获取字符串的长度
int i=0;
while(str[i] != '\0')
i++;
cout<<str<<"的长度:"<<i<<endl;
4.4 二维字符数组
char str[128]="hello";
char arr[5][128]={"hello","world", "hehehe", "xixixi", "lalala"};
4.4.1 遍历二维字符数组
char arr[5][128]={"hello","world", "hehehe", "xixixi", "lalala"};
int row = sizeof(arr)/sizeof(arr[0]);
int i;
for(i=0;i<row;i++)
{
cout<<arr[i]<<endl;
}
4.4.2 二维字符数组获取键盘输入(获取多个字符串)
char arr[5][32]={""};
int row = sizeof(arr)/sizeof(arr[0]);
//获取键盘输入
int i;
for(i=0;i<row;i++)
{
cin>>arr[i];
}
//输出二维字符数组的字符串
for(i=0;i<row;i++)
{
cout<<arr[i]<<endl;
}