第四章:数组

目录

4.1 一维数值数组

4.1.1 一维数值数组的概述

4.1.2 一维数值数组的定义

4.1.3 一维数值数组的初始化

4.2 二维数值数组

4.2.1 二维数值数组的概述

4.2.2 二维数值数组的初始化

4.2.3 二维数值数组的元素操作

 4.3 一维字符数组

4.3.1 一维字符数组的初始化

4.3.2 字符数组的遍历

4.3.3 键盘获取字符串

4.4 二维字符数组

4.4.1 遍历二维字符数组

4.4.2 二维字符数组获取键盘输入(获取多个字符串)


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:键盘输入10int 求这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 、求出每个人的平均成绩
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 、以上两种初始化的区别

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 获取字符串 遇到空格或回车 结束输入

2cin.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;
}

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值