数组(array)定义:
// 定义了变量名为a,长度为5
int a[5];a[0] = 1;a[1] = 2;……a[4] = 5;
数组的定义与操作
#include <iostream>using namespace std;int main() {int a[5];// a[0] = 1;// a[1] = 2;// a[2] = 3;// a[3] = 4;// a[4] = 5;// 在c语言中,& 符表示 :取地址; * 符表示:取值cout << "数组a的值??: " << *a << endl;cout << "数组a的地址: " << a << endl;// cout a 表示输出数组a所在内存地址,其值为数组第一项的值// cout *a 表示输出当前地址(数组a的地址)所存储的值。cout << "数组a0的地址:" << &a[0] << endl;cout << "数组a1的地址:" << &a[1] << endl;cout << "数组a2的地址:" << &a[2] << endl;// 声明时初始化int b = 0;int c[5] = {1, 2, 3, 4, 5};cout << "数组c的内容:" << c[0] << c[1] << c[2] << c[3] << c[4] << endl;for(int i =0;i < 5 ; i++){cout << c[i];}cout << endl << "---------" << endl;// 只初始一部分内容int d[9] = {1,2,3,4,5};for(int i = 0 ; i < 9 ; i++){cout << d[i] ;}cout << endl << "---------" << endl;char s[7] = {'a','b','c','d','e','f'};cout << s << endl;}
数组元素查找
例子 给出 n 个(不超过 100 个)正整数,请输出 x 第一次出现的位置。

#include <iostream>using namespace std;int main() {int n ;cin >> n;int a[101] ;// int a[100] = {12, 23, 44, 8, 36, 3, 1};for(int i = 1;i <= n;i++){cin >> a[i];}int x;cin >> x;for (int i = 1; i <= n; i++) {if (a[i] == x) {cout << i ;break;}}// for(int i = 0; i < n ; i++){// // 开始计数// int cnt = 0;// for(int j = 0 ; j < i -1; j ++){// if(a[j] < a[i]){// cnt ++;// }// }// cout << cnt << " ";// }}
小鱼比可爱 (p1428)

题意理解与转换:
有n个同学,不超过100个站成一排,大家都向前,每个同学身高为整数。 请计算,每位同学前面有几个同学比自己矮。
#include <iostream>using namespace std;int main(){int a[101],n;cin >> n;// 存储小鱼的可爱值for(int i = 0; i < n; i++){cin >> a[i];}for(int i = 0; i < n ; i++){int cnt = 0;for(int j = i -1; j > 0; j--){if(a[j] < a [i]){cnt ++;}}cout << cnt << " ";}// for(int i = 0; i < n ; i++){// // 开始计数// int cnt = 0;// for(int j = 0 ; j < i -1; j ++){// if(a[j] < a[i]){// cnt ++;// }// }// cout << cnt << " ";// }}
小鱼的数字游戏
 
自己维护计数器N,统计cin录入个数。
#include <iostream>using namespace std;int main(){int a[110] ;int tmp,n =0;do{cin >> tmp;a[n++] = tmp;}while(tmp != 0);for(int i = n-1; i >= 1;i--){cout << a[i] << " ";}}
方法二:
#include <iostream>using namespace std;int main(){int a[110] ={0};int tmp,n =0;do{cin >> tmp;a[n++] = tmp;}while(tmp != 0);while(n--){cout << a[n] << " ";}}

#include <iostream>using namespace std;int main() {int n, a[200]={0};int i = 1;cin >> n;a[0] = n;while (n != 1) {if (n % 2 == 0) {n = n / 2;} else {n = 3 * n + 1;}a[i++] = n;// cout << n << " ";}while (i--) {cout << a[i] << " ";}}
数组长度:
可以使用函数sizeof()来得到数组对应的长度。
使用memset()来进行数组统一初始化,这比用for循环要更简洁。
#include <cstring>int a[10000] = {0} ; // 推荐,初始化时初始化memset(a,0,sizeof(a));for(int i = 0; i < sizeof(a); i++){a[i] = 0;}
数组如果不初始化就可能存有其他数值,因此我们在使用前必须 初始化,可以使用 for 循环依次赋初值,也可以在定义时直接初 始化。
校门外的树


#include <iostream>using namespace std;int main() {// int num[30]={[0 ... 29]=99};int l ,g, tree[10005]={0};// l 表示路线长度, g 表示 区间段数cin >> l >> g;for(int i = 0; i < g ; i ++){int m,n;cin >> m >> n;// cout << "区间:" << i + 1 << "从" << m << "到" << n << endl;for(int j = m;j <=n ; j++){tree[j] = 1;}}// 输入数组内元素值为1的个数int cnt = 0;for(int k=0;k <= l; k++){//cout << tree[k] << endl;if(tree[k] ==0){cnt ++;}}cout << cnt;}
