1. s1,s2,s3,...,s30  
  2. 右下角的数字称为下标(subscript)  
  3. 一批具有同名的同属性的数据就组成了一个数组(array),s就是数组名。  
  4.  
  5. 1.怎样定义和引用一维数组  
  6. 一维数组、二维数组、三维数组  
  7. a.怎样定义一维数组  
  8. 例如,  
  9. int a[10];  
  10. 它表示定义了一个整型数组, 数组名为a,此数组有10个整型元素。  
  11. 这10个元素是:  
  12. a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]  
  13.  
  14. 定义一维数组的一般形式为  
  15. 类型符 数组名[常量表达式];  
  16.  
  17. 如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。  
  18. void func(int n)  
  19. {  
  20.     int a[2*n];             //合法,n的值从实参传来  
  21.     ...  
  22. }  
  23.  
  24. b.怎样引用一维数组元素  
  25. 在定义数组并对其中各元素赋值后,就可以引用数组中的元素。  
  26. 引用数组元素的表示形式为  
  27. 数组名[下标]  
  28. 例如:a[0]就是数组 a 中序号为0的元素,它和一个简单变量的地位和作用相似。  
  29. "下标"可以是整型常量或整行表达式。  
  30.  
  31. 对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。  
  32. #include "stdafx.h"  
  33.  
  34.  
  35. int _tmain(int argc, _TCHAR* argv[])  
  36. {  
  37.     int i,a[10];  
  38.     for(i=0;i<=9;i++)  
  39.         a[i]=i;  
  40.     for(i=9;i>=0;i--)  
  41.         printf("%d ",a[i]);  
  42.     printf("\n");  
  43.     return 0;  
  44. }  
  45.  
  46. c.一维数组的初始化  
  47. 为了使程序简洁,常在定义数组的同时,给各数组元素赋值,这称为数组的初始化。  
  48. //在定义数组时对全部数组元素赋予初值。例如  
  49. int a[10]={0,1,2,3,4,5,6,7,8,9};  
  50. //可以只给数组中的一部分元素赋值。例如  
  51. int a[10]={0,1,2,3,4};  
  52. //如果想使一个数组中全部元素值为0,可以写成  
  53. int a[10]={0,0,0,0,0,0,0,0,0,0};  
  54. 或  
  55. int a[10]={0};  
  56. //在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。例如:  
  57. int a[5]={1,2,3,4,5};  
  58. 可以写成  
  59. int a[]={1,2,3,4,5};  
  60.  
  61. d.一维数组程序举例  
  62. 用数组来处理求 Fibonacci 数列问题  
  63. #include "stdafx.h"  
  64.  
  65.  
  66. int _tmain(int argc, _TCHAR* argv[])  
  67. {  
  68.     int i;  
  69.     int f[20]={1,1};  
  70.     for(i=2;i<20;i++)  
  71.         f[i]=f[i-2]+f[i-1];  
  72.     for(i=0;i<20;i++)  
  73.     {  
  74.         if(i%5==0) printf("\n");  
  75.         printf("%12d",f[i]);  
  76.     }  
  77.     printf("\n");  
  78.     return 0;  
  79. }  
  80.  
  81. 有10个地区的面积,要求对它们按由小到大的顺序排列  
  82. #include "stdafx.h"  
  83.  
  84.  
  85. int _tmain(int argc, _TCHAR* argv[])  
  86. {  
  87.     int a[10];  
  88.     int i,j,t;  
  89.     printf("input 10 numbers :\n");  
  90.     for(i=0;i<10;i++)  
  91.         scanf_s("%d",&a[i]);  
  92.     printf("\n");  
  93.     for(j=0;j<9;j++)  
  94.         for(i=0;i<9-j;i++)  
  95.             if(a[i]>a[i+1])  
  96.             {t=a[i];a[i]=a[i+1];a[i+1]=t;}  
  97.             printf("the sorted numbers :\n");  
  98.             for(i=0;i<10;i++)  
  99.                 printf("%d ",a[i]);  
  100.             printf("\n");  
  101.     return 0;  
  1. 2.怎样定义和引用二维数组  
  2. 二维数组常称为矩阵(matrix)。把二维数组写成行(column)和列(row)的排列形式,  
  3. 可以有助于形象化地理解二维数组的逻辑结构。  
  4. a.怎样定义二维数组  
  5. float pay[3][6];  
  6. 以上定义了一个 float 型的二维数组,第一维有3个元素,第2维有6个元素。  
  7. 每一维的长度分别用一堆括号包起来。  
  8.  
  9. 二维数组定义的一般形式为  
  10. 类型说明符 数组名[常量表达式][常量表达式];  
  11.  
  12. b.怎样引用二维数组的元素  
  13. 二维数组元素的表示形式为  
  14. 数组名[下标][下标]  
  15.  
  16. c.二维数组的初始化  
  17. //分行给二维数组赋初值。例如:  
  18. int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};  
  19. //可以将所有数据写在一个大括号内,按数组元素在内存中的排列顺序对各元素赋初值。例如:  
  20. int a[3][4]={1,2,3,4,5,6,7,8,9,10,,11,12};  
  21. //可以对部分元素赋初值  
  22. int a[3][4]={{1},{5},{9}};  
  23. int a[3][4]={{1},{},{9}};  
  24. //如果对全部元素都赋初值,则定义数组时对第1维的长度可以不指定,但第2维的长度不能省。  
  25. 例如:  
  26. int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};  
  27. 与下面的定义等价:  
  28. int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};  
  29.  
  30. int a[][4]={{0,0,3},{},{0,10}};  
  31. 数组各元素为  
  32. 0   0   3   0  
  33. 0   0   0   0  
  34. 0   10  0   0  
  35.  
  36. d.二维数组程序举例  
  37. 将一个二维数组行和列的元素互换,存在另一个二维数组中  
  38. #include "stdafx.h"  
  39.  
  40.  
  41. int _tmain(int argc, _TCHAR* argv[])  
  42. {  
  43.     int a[2][3]={{1,2,3},{4,5,6}};  
  44.     int b[3][2],i,j;  
  45.     printf("array a:\n");  
  46.     for(i=0;i<=1;i++)  
  47.     {  
  48.         for(j=0;j<=2;j++)  
  49.         {  
  50.             printf("%5d",a[i][j]);  
  51.             b[j][i]=a[i][j];  
  52.         }  
  53.         printf("\n");  
  54.     }  
  55.     printf("array b:\n");  
  56.     for(i=0;i<=2;i++)  
  57.     {  
  58.         for(j=0;j<=1;j++)  
  59.             printf("%5d",b[i][j]);  
  60.         printf("\n");  
  61.     }  
  62.     return 0;  
  63. }  
  64.  
  65. 有一个3*4的矩阵,要求编程序求出其中最大的那个元素的值,以及其所在的行号和列号  
  66. #include "stdafx.h"  
  67.  
  68.  
  69. int _tmain(int argc, _TCHAR* argv[])  
  70. {  
  71.     int i,j,row=0,colum=0,max;  
  72.     int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};  
  73.     max=a[0][0];  
  74.     for(i=0;i<=2;i++)  
  75.         for(j=0;j<=3;j++)  
  76.             if(a[i][j]>max)  
  77.             {  
  78.                 max=a[i][j];  
  79.                 row=i;  
  80.                 colum=j;  
  81.             }  
  82.             printf("max=%d\nrow=%d\ncolum=%d\n",max,row,colum);  
  83.     return 0;