数组
第一节 一维数组
1.一维数组的定义
数组是一组具有相同类型的变量的集合。
一维数组的一般定义格式为:
类型标识符 数组名[常量表达式];
说明:
①数组名的命名规则与变量名的命名规则一致。
②常量表达式表示数组元素的个数。可以是常量和符号常量,但不能是变量。
2.一维数组的初始化
数组的初始化,可以在定义时一并完成。格式:类型标识符 数组名[常量表达式]={值1,值2,……}
说明:
①在初值列表中可以写出全部数组元素的值,也可以写出部分。
②对数组元素全部初始化为0,可以简写为:{ }。
3.数组越界
C++语言规定,使用数组时,要注意:
①数组元素的下标值为正整数。
②在定位元素个数的下标范围内使用。
第二节 二维数组
1.二维数组的定义
二维数组的一般定义格式为:
数据类型 数组名[常量表达式1][常量表达式2];
2.二维数组元素的引用
引用格式为:
<数组名>[下标1][下标2]
注意:每个下标表达式取值不应超出下标所指定的范围,否则会导致致命的越界。
一维数组在内存中占用的字节数为:数组长度×sizeof(基类型),二维数组占用的字节数为:第一维长度×第二维长度×sizeof(基类型)。
注意
①在不同编译系统中,int型所占的字节数是不同的。
②数组第二维的长度声明永远都不能省略。
第三节 字符类型和字符数组
1.字符类型
字符类型为由一个字符组成的字符常量或字符变量。
字符常量定义:
const
字符常量='字符'
字符变量定义:
char 字符变量;
2.字符数组
格式:
[存储类型] char 数组名[常量表达式1]…
字符常量和字符串常量的区别:
①定界符不同,字符常量由单括号引起来,字符串常量由双引号括起来。
②字符常量只能是单个字符,字符串常量则可以是多个字符。
③可以把一个字符常量赋给一个字符变量,但不能把一个字符串常量赋给一个字符变量。
④字符常量占一个字节,字符串常量占用字节数等于字符串的字节数加1。
3.字符串的输入和输出
输入语句:
①scanf("%s",字符串名称);
scanf语句得到的字符串不会有空格。
②gets(字符串名称);
使用gets只能输入一个字符串。
输出语句:
①printf("%s",字符串名称);
输出字符串不包括字符串结束标识符'\0'。
②puts(字符串名称);
4.字符串string类型
二.解决问题
①运用一维数组我们可以解决数组逆序重、开关灯等问题。
例 输入n个数,要求程序按输入时的逆序把这n个数打印出来,已知整数不超过100个。也就是说,按输入相反顺序打印这n个数。
#include<iostream>
using namespace std;
int a[110];
int main()
{
int x,n=0;
while(cin>>x)
a[n++]=x;
for (int i=n-1;i>=1;--i)
cout<<a[i];
cout<<a[0];
return 0;
}
②二维数组可以进一步解决数据较多的问题,如矩形交换行、计算鞍点、计算矩形边缘元素之和等。
③字符数组帮助我们解决字符串hash等问题。
三.收获
通过前面几章的学习,我们已经可以编写程序来解决各种相当复杂的问题了,但是当需要处理的数据比较多时,我们在这章学的数组可以更好地解决问题。
解决不同类型的问题要用不同类型的C语言知识,这样才能将程序设计发挥出它最大的功能。