数组
1.数组是什么
数组是一个变量,由数据类型相同的一组元素组成
变量是内存中的一块空间。
数组是内存中一串连续的空间。
2.数组的结构和基本要素
- 标识符:数组的名称,用于区分不同的数组
- 数组元素∶向数组中存放的数据
- 元素下标:对数组元素进行编号,从0开始
- 元素类型:数组元素的数据类型
数组长度固定不变,避免数组越界
3.一维数组的使用
定义数组的格式
数据类型 数组名[数组长度]
注意:这里和 c 不同的是,c++ 的 数组长度 可以是变量
int n=100;
int num[n];
这样定义是允许的。
一维数组初始化
3种初始化方式:
//定义长度,全部赋初值
int years[6] = {2012,2013,2014,2015,2016,2017};
//定义长度,部分赋初值
int months[12]= {1.3.5.7.8,10.12};
//不定义长度,根据初值个数确定定义长度
int days[] = {1,15};
注意:
int array[]={}
是不可以的,因为系统无法确定其大小。
c++中新增的功能:
- =可以省略 :int days{1,15};
- 可以使用{}赋初值,代表全部赋为0:float m[10]{};
动态赋值
#include <iostream>
using namespace std;
int main()
{
const int N=5;
int num[N];
for(int i=0;i<5;i++)
{
cout<<"请输入第"<<i+1<<"个元素"<<endl;
cin>>num[i];
}
for(int i=0;i<N;i++){
cout<<num[i]<<" ";
}
return 0;
}
获取数组长度
sizeof(数组名)/sizeof(数组类型)
eg:
#include <iostream>
using namespace std;
int main()
{
const int N=5;
int num[N];
cout<<sizeof(num)/sizeof(int)<<endl;
return 0;
}
输出:
5
例题
(1)获取数组平均值:
#include <iostream>
using namespace std;
int main()
{
int num[]{1,34,56,21,45,67,90};
int sum=0;
for(int i=0;i<sizeof(num)/sizeof(int);i++)
{
sum+=num[i];
}
cout<<sum/(sizeof(num)/sizeof(int))<<endl;
return 0;
}
输出:
44
(2)求数组中的最大值
#include <iostream>
using namespace std;
int main()
{
int num[]{1,34,56,21,45,67,90};
int min_num,max_num;
int n=sizeof(num)/sizeof(int);
min_num=num[0];
max_num=num[0];
for(int i=0;i<n;i++)
{
if(num[i]<min_num)
min_num=num[i];
if(num[i]>max_num)
max_num=num[i];
}
cout<<"最大值是:"<<max_num<<endl;
cout<<"最小值是:"<<min_num<<endl;
return 0;
}
(3)求数组中奇数和偶数个数
#include <iostream>
using namespace std;
int main()
{
int num[]{1,34,56,21,45,67,90};
int j_num=0,o_num=0;
int n=sizeof(num)/sizeof(int);
for(int i=0;i<n;i++)
{
if(num[i]%2==0)
o_num++;
else j_num++;
}
cout<<"奇数个数是:"<<j_num<<endl;
cout<<"偶数个数是:"<<o_num<<endl;
return 0;
}
(4)查找下标
#include <iostream>
using namespace std;
int main()
{
int num[] {1,34,56,21,45,67,90};
int s_num,s_index=-1;
int n=sizeof(num)/sizeof(int);
cout<<"请输入你要查找的数字: "<<endl;
cin>>s_num;
for(int i=0; i<n; i++)
{
if(num[i]==s_num)
{
s_index=i;
break;
}
}
if(s_index==-1)
{
cout<<"没有找到该数字!"<<endl;
}else{
cout<<"找到该数字,下标是:"<<s_index<<endl;}
return 0;
}