所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字成为数组名,编号成为下标。组成数组的各个变量成为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。(来自百度百科)
下来我们直接用例子来说话吧:请看代码1:
#include<stdio.h> int main() { int a[8], i; for(i = 1; i <= 8; ++i) a[i] = 0; return 0; }
首先是定义一个数组a, 然后给数组a的每个元素赋值为0,可能有的同学已经发现问题了,数组越界了……a[8]这个元素是不存在的,同时这个代码可能为形成死循环,大家想想为什么?这里最后再做解释。
下面请看代码2:
// 查找整数d是否在数组 a 中 #include<stdio.h> #define N 10; int main() { int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //初始化数组 int i, d; for(i = 0; i < N; ++i) { scanf("%d", &d); for(i = 0; i < N; ++i) { if(a[i] == d) { printf("d in the array of a! "); break; } } if(i == N) printf("d not in the array of a! "); } return 0; }
这个程序是给出一个数组a,然后输入一个数字d,看d是否在数组a中出现过。但是代码不能通过编译,请大家找找错误吧……
可能大家已经发现了原因,因为#define N 10后面加了一个分号";",就是这个分号的原因,去掉后就可以通过编译并运行了,来我们来运行一下吧……
又发现错误了!!! 当我们输入11时,程序就直接结束了,为什么啊!!?没错就是因为变量i, 这可能就是大家犯的一个小错误了,请看下面正确的代码!
// 查找整数d是否在数组 a 中 #include<stdio.h> #define N 10 int main() { int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //初始化数组 int i, j, d; for(i = 0; i < N; ++i) { scanf("%d", &d); for(j = 0; j < N; ++j) { if(a[j] == d) { printf("d in the array of a! "); break; } } if(j == N) printf("d not in the array of a! "); } return 0; }
注意:当有循环嵌套时,千万不要让你的两个循环的 "i", 一样!
其实这道题还有其它方法,大家想想看,请看下边的代码3:
// 查找整数d是否在数组 a 中 #include<stdio.h> #define N 10 int main() { int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //初始化数组 int b[11] = {0}; int i, j, d; for(i = 0; i < N; ++i) b[a[i]] = 1; for(i = 0; i < N; ++i) { scanf("%d", &d); if( d < 11 && b[d] ) printf("d in the array of a! "); else printf("d not in the array of a! "); } return 0; }
代码4:数组排序
//排序 #include<stdio.h> #include<algorithm> using namespace std; #define N 10 int a[N] = {2, 3, 1, 4, 5, 6, 9, 10, 2, 1}; int main() { int i; sort(a, a+N); printf("排序后数组a为: "); for(i = 0; i < N; ++i) printf("%d ", a[i]); puts(""); //输出换行 return 0; }