【1】为什么引入数组?
实际编程中,我们有可能会面临这样子的问题,需要定义很多的变量,而且这些变量的类型都是相同的,例如:
int a,b,c,d,e,f......;
那么,矛盾总是推动着事物向前发展进步的根本动力。程序设计语言也不例外,同时遵循这个客观的规律。
所以,为了更简练,更清晰的模拟描述这一系列数据的表示,我们的前辈们想到了数组。例如:
int a[5]; //a[0] a[1] a[2] a[3] a[4]分别代表不同的变量,但是都是同一个数据类型的。让别人看上去一目了然,更有利于以后的程序维护。
【2】数组的定义规则如何?
类型 数组名[数组元素个数]
int array[100];
【3】数组的下标为什么从零开始?
计算机编程语言都是由西方引进的,大家都知道,西方人的胸前都喜欢佩戴一个十字架什么的。
其实这个十字架很有内容的,还记得不?中国曾经的那些老木匠都用木质的十字架,为了什么呢?为了能够准确,甚至说是精确。
数组的下标除了区分不同元素而外,设计者也赋予了它特别的用途,那就是偏移量的重要意义。
a[0]代表的就是*a ,那么,为了更准确的描述,*(a+1) == a[1]这样子的效果是很容易理解的。
【4】数组可以分为哪几种?
数值数组,字符数组,指针数组,结构数组等等
【5】数组指针与指针数组什么区别?
数组指针:int (*pa)[10] pa就是所谓的数组指针变量名。即就是说pa是一个指针变量。
指针数组:int * pa[10] pa就是所谓的指针数组变量名。即就是说pa是一个数组变量名。
【6】数组名是什么类型?
数组名是一个数组类型的指针,也就是数组首元素的指针。
例如:
1 int ar[10]; 2 3 int *p=ar;
【7】如何创建多维数组?
示例代码如下:
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int (*p)[3][4]; 6 int i,j,k; 7 p = new int[2][3][4]; 8 for(i=0;i<2;i++) 9 { 10 for(j=0;j<3;j++) 11 { 12 for(k=0;k<4;k++) 13 { 14 *(*(*(p+i)+j)+k) = i*100+j*10+k; 15 } 16 } 17 } 18 for(i=0;i<2;i++) 19 { 20 for(j=0;j<3;j++) 21 { 22 for(k=0;k<4;k++) 23 { 24 cout<<p[i][j][k]<<" "; 25 } 26 cout<<endl; 27 } 28 } 29 delete []p; 30 return 0; 31 }
【8】杨辉三角如何利用数组输出?
示例代码如下:
1 #include<iostream> 2 #include<assert.h> 3 #include<iomanip> 4 #include<conio.h> 5 using namespace std; 6 void main() 7 { 8 const int MaxN=11; 9 int a[MaxN][MaxN]; //数组11行11列,0行0列不用 10 for(int i=1;i<MaxN;i++) 11 { 12 a[i][1] = 1; 13 a[i][i] = 1; 14 for(int j = 2; j < i; j++) 15 a[i][j]=a[i-1][j-1]+a[i-1][j]; 16 } 17 for(int i = 1; i < MaxN; i++) //显示结果 18 { 19 cout<<setw((MaxN-i)*4); 20 for(int j = 1; j <= i; j++) 21 cout<<a[i][j]<<setw(8); 22 cout<<endl; 23 } 24 getch(); 25 }
运行结果如下:
【9】乘法口诀如何利用数组输出?
示例代码如下:
1 #include<iostream> 2 using namespace std; 3 void main() 4 { 5 for(int i=1;i<10;i++) 6 { 7 for(int j=1;j<i+1;j++) 8 { 9 cout<<j<<"*"<<i<<"="<<i*j<<" "; 10 } 11 cout<<endl; 12 } 13 }
运行结果如下:
【10】