数组录入
情况一: 知道数组长度
直接申请对应长度数组,通过确定的for循环录入数组
#include<iostream>
using namespace std;
int main(){
int length;
cout<<"请输入数组长度:";
cin>>length;
int a[length];
for(int i=0;i<length;i++){
cin>>a[i];
}
for(int i=0;i<length;i++){
cout<<a[i]<<" ";
}
return 0;
}
情况二: 未知数组长度,必须用数组
必须事先定义长度很大的数组,先录入a[0],再通过while循环录入
//在未知数组长度时,事先定义长数组,进行录入
#include<iostream>
using namespace std;
int main(){
int i=0;
int a[10];
cin>>a[i++];
while(cin.get()!='\n'){ //while(getchar()!='\n'){
cin>>a[i++]; //scanf("%d",&a[i++]);
}
cout<<i<<endl;
for(int j=0;j<i;j++){
cout<<a[j]<<" ";
}
return 0;
}
情况三: 用vector实现动态数组
#include<iostream>
#include<vector>
using namespace std;
int main(){
int num;
vector<int>a;
while(cin>>num){
a.push_back(num);
if(cin.get()=='\n') break;
}
cout<<a.size()<<endl;
for(int i=0;i<a.size();i++){
cout<<a[i]<<" ";
}
return 0;
}
情况一:数组初始化为0或者-1
memset(数组名,值,sizeof(数组名));
头文件#include<cstring>
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int a[6];
int b[6][6];
memset(a,-1,sizeof(a)); //一维数组初始化为-1
memset(b,0,sizeof(b)); //二维数组初始化为0
for(int i=0;i<6;i++){
cout<<a[i]<<" "; //-1 -1 -1 -1 -1 -1
}
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
cout<<b[i][j];
}
out<<endl;
}
return 0;
}
情况二:数组初始化为任意值
fill(数组地址,数组地址+长度,初始值)
头文件#include<algorithm>
#include<iostream>
#include<algorithm> //使用fill初始化数组需要导入算法库
using namespace std;
int main(){
int a[6];
int b[6][6];
fill(a, a+6, 1); //初始化一维数组:fill(数组名,数组名+长度,数值)
fill(b[0], b[0]+6*6, 2); //初始化二维数组:fill(第1个,第1个+长度*长度,数值)
for(int i=0;i<6;i++){
cout<<a[i];
}
cout<<endl;
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
cout<<b[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
数组作为函数参数时,一维数组长度可以空缺不指定,二维数组至少指定第二维