一维数组初步认识

啊,哈喽,小伙伴们大家好。我是#张亿,今天呐,学的是一维数组初步认识

一维数组的定义

定义格式如下:

类型名 数组名 [常量表达式];

例如:

int a[10]; 

Copy

说明:

  1. 类型名是指数组元素的类型,它可以是任何类型,同一个数组中的元素具有相同类型。因此我们可以说,数组是由固定数量的相同类型的元素组成。上面例子中int说明这个数组的类型是整数类型。

  2. 数组名必须是标识符,而数组元素的个数由常量表达式决定,这个值必须是正整数常量表达式,不能是变量或含有变量的表达式。上面例子中a是这个数组的数组名,[10]是这个数组元素的个数。

  3. 数组元素的个数由常量表达式决定,数组下标从 0 开始。因此,如果你定义了一个含有 n 个元素的数组变量,只能够从 0 引用到 n-1 。例如int a[10]; 这个数组的下标为0~9,其元素分别为a[0]、a[1]、 a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]。C++不检查数组下标是否越界!如果下标越界,程序会崩溃!

  4. 定义一维数组元素可以直接赋初始值,如int a[5]={10,20,30,40,50} 则他们的值为 a[0] 是 10 、a[1]是 20 、a[2]是 30 、a[3]是 40 、a[4]是 50 。

注意:如果你想要使用10个数组变量,而且想这些变量的下标名是1~10,那么定义数组就应该为int a[11]。在这个数组中定义了 11 个数组元素,我们在使用的时候可放弃下标0不用,直接从1开始用,就可以实现10个数组元素的下标从 1~10 。这个方法比较适合小学生在刚开始学习使用数组时使用。

补充说明

在 c++ 新的语法规范(c++11,这是2011年通过的新语法规范),可以使用下面的格式定义数组:

类型名 数组名 [变量表达式];

具体的例子是:

int n = 100;
int a[n];

Copy

上述的这个写法在 c++98 的规范里面是错误的,但是在 c++11 规范之下是合法的。编译器不一定支持 c++ 11 的标准。很多严肃的比赛会提前说明最后评测是采用哪一套语法标准。

作为初学者,可以先按照 c++98 的规范来写程序(也就是说,中括号里面用常量,而不是变量去定义数组的大小)。

在本网站中,可以通过设置 偏好设置 来指定采用哪一个 c++ 语法标准。

一维数组的输入

  1. 数组名代表的不是一个变量,而是一批变量,因此不能直接读入整个数组,而是要逐个读入数组元素,通常用循环语句来完成这一功能。
for(int i=1;i<=n;i++) //从键盘读入n个数组元素的值最常用的方法
   cin>>a[i]; 

Copy

  1. 也可以单独输入某个数组元素,例如:
cin>>a[10];

 

一维数组的输出

  1. 数组元素的输出通常用循环语句来实现。

例如:输出 n 个数组元素

for(int i=1;i<=n;i++)
	cout<<a[i]<< " ";   //数组元素之间用空格分隔

Copy

  1. 单独输出某个数组元素,例如:
cout<<a[10];

 

一维数组的赋值

  1. 一维数组的赋值通常是利用循环语句来实现。

例如:一维数组的赋值:

for(int i=1;i<=n;i++)
	a[i]=i; //数组元素 a[1] 到 a[n] 的值分别为 1 到 n 

Copy

例如:一维数组清零:

for(int i=1;i<=n;i++)
	a[i]=0; //数组元素清零

Copy

  1. 单独给某个数组元素赋值,例如:
a[5]=100;
a[6]=a[3]+20;
a[15]=a[20];

 

数组下标

数组下标用于标明某一元素在数组中的位置,它与数组元素一一对应。

例如:

#include<iostream>
using namespace std;
int a[11];
int main()
{
	for(int i=1;i<=10;i++)
		cin>>a[i];
	for(int i=1;i<=10;i++)
		cout<<a[i]<<" ";

	return 0;
}

Copy

运行时输入 100 98 99 100 95 97 96 100 99 96

对于数组元素a[2] ,中括号里的 2 是指这个数组元素的下标为 2 ,a[2] 的值是 98 。

数组下标12345678910
数组元素的值10098991009597961009996

 

查找和统计

在某个数组中查找满足某个特定条件的数据,可以从数组的第一个至最后一个逐个进行比较。

例如:在 a 数组,查找某个数 m 出现的位置,并输出来:

for(int i=1;i<=n;i++)
    if (a[i]==m) cout<<i<<" ";   //查找位置

Copy

又例如:统计 a 数组中比某个数 m 大 (或者小、等于) 的数的总个数s:

for(int i=1;i<=n;i++)
    if (a[i]>m) s=s+1;        //查找到符合条件的,累加个数
  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值