1.5 数组
一、一维数组
1.概念:
- 同一类型的多个数据分配一段连续的内存空间。
2.定义:
- 数据元素类型 数组变量名称[数组元素的个数];
- 数据元素类型 数组变量名称[] = {初值1,初值2,…};
3.初始化:
-
全部初始化
int a[]={1,2,3,4,5,6};
-
部分初始化
int a[5]={1,2,3,};
a[3]=0;
4.访问:
下标运算符[],数组名[下标]
5.程序举例
#include<iostream>
#include<iomanip>
using namespace std;
int main() //数组逆置处理
{
int myArray[] = { 1, 2, 3, 4, 5 };
int n = sizeof(myArray) / sizeof(myArray[0]);//计算数组元素的个数
int i, j,tmp;
for (i = 0, j = n - 1; i < j; i++, j--)
{
tmp = myArray[i]; myArray[i] = myArray[j]; myArray[j] = tmp;
}
for (i = 0; i < n; i++)
cout << setw(5) << myArray[i];
cout << endl;
system("pause");
return 0;
}
二、二维数组
1.概念
- 数组的元素又是数组,可看作***矩阵***。
2.定义
- 数据元素类型 数组变量名称[数组元素的行数];
- 数据元素类型 数组变量名称[][数据元素的列数]={初值1,初值2,…};
3.初始化
-
分行初始化
例:
int a[][3]={{1},{4,5}}; a[0][0]=1, a[0][1]=0, a[0][2]=0, a[1][0]=4, a[1][1]=5, a[1][2]=0
-
不分行初始化
例:
int a[][3]={1,2,3,4,5}; a[0][0]=1, a[0][1]=2, a[0][2]=3, a[1][0]=4, a[1][1]=5, a[1][2]=0
4.访问:
- 下标运算符[],数组名[下标]
5.程序举例
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
#define COL 10
#define COLUMN 10
int main()
{
int mat [COL][COLUMN] = { 0 };
int i, j;
for (i = 1; i < COL; i++) //矩阵元素赋值,乘法表
for (j = 1; j <= i; j++)
mat [i][j] = i*j;
for (i = 1; i < COL; i++) //输出乘法表
{
for (j = 1; j <= i; j++)
cout << setw(3) << j << '*' << i << '=' <<mat [i][j];
cout << endl;
}
//将结果写到文件中
ofstream outFile("res.txt");//定义输出文件流
for (i = 1; i < COL; i++)
{
for (j = 1; j <= i; j++)
{
//将结果写到输出文件流中
outFile << setw(3) << j << '*' << i << '=' << mat [i][j];
}
outFile << endl;
}
outFile << endl;
outFile.close();//关闭输出文件流
fflush(stdin);//清空输入缓冲区
getchar();
return 0;
}
三、字符数组和字符串类
1.概念
- 数组的每一个元素均为字符类型
2.定义
- char 字符数组名称[字符数组最多存放的字符元素个数];
- char *字符指针名 = new char[N];
- string 字符串变量名;
3.程序举例
#include<iostream>
#include<string>//C++字符串,是类类型
using namespace std;
int main()
{
string numStr;
long int number = 0;
int singleNum;
cout << "输入一个数字字符串" << endl;
cin >> numStr;
int i = 0;
while (numStr[i] != '\0')
{
//将单个字符变为数字,48是0的ASC码值
singleNum = numStr.at(i) - 48;
//返回指定的下标位置的字符,检查下标是否有效
number = number * 10 + singleNum;
i++;
}
cout << "numStr=" << numStr << endl;
cout << "number=" << number << endl;
fflush(stdin);//清空输入缓冲区getchar();从输入缓冲区中读取一个字节的数据return 0;
}