数组总结
一、单元知识点
一维数组:
定义
按顺序排列的一组同类型的变量构成的集合。
使用一维数组可以使代码不亢长 例
cin>>h0>>h1>>•••>>h49;//程序中是不能用省略号来表示的
for( i=0;i<=49;i++ ) cin>>h[ i ];
一维数组的格式:数据类型 数组名 [整数1] [整数2]•••[整数n];
例 int score[10000];//或者float score[10000];
bool xb[10000];//或者char xb[10000]
如何使两个数的值相等
方法一,逐个元素赋值
b[0]=a[0]
b[1]=a[1]
b[2]=a[2]
b[3]=a[3]
b[4]=a[4]
方法二,通过循环赋值
int i;
for(i=0;i<5;i++){
b[i]=a[i]
…
}
输入与输出
C++里提供两个函数给数组“整体”赋值
memset函数
memset函数是给数组“按字节”进行赋值,一般用在char型数组后,如果是int类型的数组,一般赋值为0和-1。使用前需要包含头文件:#include<cstring>
例如,“memset(h,0,sizeof(h));”就是将h数组所有元素赋值为0。
2. fill函数
fill函数是给数组“按元素”,可以是整个数组,也可以是部分连续函数,可以赋任何值。使用前需要包含头文件:#include<algorithm>。
例如,“fill(a,a+10,5);”就是将a数组的前10个元素赋值为5。
例题
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int a[10],b[10],c[10],d[10],i;
memset(a,0,sizeof(a)); // 将a数组所有元素均赋值为0
for(i = 0; i < 9; i++) cout << a[i] << “ “ ;
cout << a[9] << endl;
memset(b,1,sizeof(b));// 将 b 数组所有元素均赋值为
二进制数 2^0+2^8+2^16+2^24=16843009
for(i = 0; i < 9; i++) cout << b[i] << “ “ ;
cout << b[9] << endl;
memset(c,0,5);
//将 c 数组前 5 个字节都赋值为 0,所以只能确定 c[0]
等于0,其他元素值不确定
for(i = 0; i < 9; i++) cout << c[i] << “ “ ;
cout << c[9] << endl;
fill(d,d+5,8);
//将 d 数组前 5 个元素都赋值为 8,其他元素值不确定
for(i = 0; i < 9; i++) cout << d[i] << “ “ ;
cout << d[9] << endl;
return 0;
}
赋值
int a[5]={12 ,13 ,24 ,35 ,49}
int a[5]={0}
int a[ ]={4 ,7 ,8 ,10 ,12}
例题
逆序输出数
#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;
}
2. 求Fibonacci数列
分析:1,1,2,3,5,8,…的第k个数,即F1=1(n=1),F2=1(n=2),Fn=Fn-1 + Fn-2(n>=3)
#include<iostream>
using namespace std;
int main( ){
for i,k;
int f[60]={1,1};
for(i=2;i<60;i++)
f[i]=f[i-1]+f[i-2];
cin>>k;
cout&l