第1课 一维数组的定义
数组: 为了表示同一批对象的统一属性。
定义格式: 类型标识符 数组名[常量表达式];
(类型标识符可以为任何基本数据类型或结构体;数组名必须是合法的标识符;常量表达式的值为数组元素个数。)
int d[50],g[100];
int a[5*10];
#define N 50
int b[N];
引用数组的格式: 数组名[下标]
(下标只能为整型常量或整型表达式,值必须在数组定义的下标范围内,不能一次引用整个数组,只能逐个引用数组的单个元素。)
第2课 一维数组的输入与输出
利用循环语句逐个输出数组元素,例:
int h[100];
for(i=0;i<100;i++) cout<<h[i];
数组赋值:
键盘读入
int h[100];
fot(i=0;i<100;i++) cin>>h[i];
- 直接赋值
int h[100],a[20]; for(i=0;i<100;i++) h[i]=0; for(i=0;i<20;i++) a[i]=i*2+1;
- “整体”赋值
①memset函数:“按字节”赋值,一般用于char型数组,若是int类型的数组,一般赋值为0或1。使用前包含头文件#include<cstring>。
②fill函数:“按元素”赋值,可以是整个数组或部分连续元素,可以赋任何值。需包含头文件#include<algorithm>。
可在定义数组的同时,给所有或部分元素赋值,例:
int a[10]={0,1,2,3,4,5,6,7,8,9};
int a[10]={0,1,2,3,4}; //部分赋初值,后面的元素自动初始化为0
int a[]={1,2,3,4,5};//不定义数组长度,直接根据赋值个数定
经典例题:走楼梯
【问题分析】
假设f(i)表示走到第i级楼梯的走法,则走到第i(i>2)级楼梯有两种可能:一种是从第i-1级楼梯走过来;另一种是从第i-2级楼梯走过来。根据加法原理,f(i)=f(i-1)+(i-2),边界条件为:f(1)=1,f(2)=2。具体实现时,定义一维数组f,用赋值语句从前往后对数组的每一个元素逐个赋值。本质上,f(i)构成了斐波那契数列。
#include<cstdio>
using namespace std;
int main()
{
int n,i,f[31];
scanf("%d",&n);
f[1]=1;f[2]=2;
for (i=3;i<=n;i++)
f[i]=f[i-1]+f[i-2];
for (i=1;i<n;i++)
printf("%d",f[i]);
printf("%d\n",f[n]);
return 0;
}
第3课 一维数组的插入删除
插入操作时应注意将数组定义的足够大。
例:插队问题
【问题分析】
N个人的排队情况可以用数组q表示,q[i]表示排在第i个位置上的人。定义数组时多定义一