第八章 数组
1.数组是一组具有相同类型的变量集合,可使用一个统一的名字来标识这组相同类型的数据,这个名字称为数组名,构成数组的每个数据项称为数组元素.
例:用如下数组来存储五个学生的成绩:
int score[5];
int代表该数组的基类型。即数组中元素的类型.
score后方括号内的数字代表数组元素的个数.
2.数组要定义成全局数组:可初始化.
不要在某个函数下定义:局部数组.
3.引用数组元素时下标可以是整型变量。
例如,引用score的第i个元素用score[i],但在定义数组时不能使用变量定义数组的大小,即下面的定义是非法的:
int score[n];
即使在此之前变量n已被赋值,也不允许这样定义。数组一旦定义就不能再改变它大小,只能用整型常量定义数字的大小。
4.二维数组类型:数组名[第一维长度][第二维长度]
用两个下标确定各元素在数组中的顺序,可用排列成i行i列的元素表示。
例:冒泡排序
#include<iostream>
#include<iomanip>
using namespace std;
const int n=10;
int t,a[n+1]; //定义数组
int main()
{
for (int i=1; i<=n; ++i)
cin>>a[i]; //输入十个数
for (int j=1; j<=n-1; ++j) //冒泡法排序
for (int i=1; i<=n-j; ++i) //两两相比较
if (a[i]<a[i+1]) //比较与交换
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for (int i=1; i<=n; ++i)
cout<<setw(5)<<a[i]; //输出排序后的十个数
cout<<endl;
return 0;
}
5.字符数组和字符串类型
字符数组:是指元素为字符的数组。字符数组是用来存放字符序列或字符串的。字符数组也有一维、二维和三维之分。
1、字符数组的定义格式
字符数组定义格式同于一般数组,所不同的是数组类型是字符型,第一个元素同样是从ch1[0]开始,而不是ch1[1]。具体格式如下:
[存储类型] char 数组名[常量表达式1]…
例如:
char ch1[5]; //数组ch1是一个具有5个字符元素的一维字符数组
2.字符串的输入
从键盘输入一个字符数组可以使用scanf语句或gets语句。
(1)scanf语句 格式:scanf(“%s”,字符数组名);
说明:①系统会自动在输入的字符串常量后添加‘\0’标志,因此输入时,仅输入字符串的内容即可。②输入多个字符串时,以空格分隔。
(2)gets语句 格式:gets(字符数组名);
说明:使用gets只能输入一个字符串。读入的是一整行,包括空格。
3、输出
向屏幕输出一个字符串可以使用printf语句或puts语句。
(1)printf语句
格式:printf(“%s”,字符数组名);
(2) puts语句
格式:puts(字符串名称);
说明:puts语句输出一个字符串和一个换行符。对于已经声明过的字符串a,printf(“%s\n”,a)和 puts(a)是等价的。