神武飞扬

导航

 

数组是什么?

它是可以在内存中连续存储多个元素的结构,它所存储的所有元素必须属于相同类型,

声明和使用数组的基本格式是元素类型 数组名[元素个数] 比如int ages[3];

数组有一维数组,二维数组,多维数组

在我的理解多维数组就是数组的嵌套使用

举个简单的例子,

一维数组就是一排座位有几个人,二维数组就是一个教室有几排座位,一排座位有几个人,三维数组就是一个学校有几个教室,一个教室有几排座位,一排座位有几个人

一维数组中存储的是基本的元素,二维数组存储的是一维数组,三维数组存储的是一维数组

数组中的经典排序方式,冒泡排序

这个琢磨明白了就很容易,两两比较,大的就交换位置,直到最大的交换到最后,然后从头开始继续比较,一直比较到第二位,因为从第二位到最后一位大小确定了,第一位自然是最小的了

所以冒泡排序归结为一句话,N个数字来排队,两两比较小靠前,外层循环N-1(控制比较轮数)内层循环N-1-i(控制每轮比较次数,i为外层循环变量)

  int nums[]={10,3,8,1,6};

   int i,j,temp;

   //外层控制比较的轮数(5个数字比较4轮)

   for(i=0;i<4;i++){

      //内层循环控制每轮比较的次数

     for(j=0;j<4-i;j++){

       if(nums[j]>nums[j+1]){//交换顺序

     temp = nums[j];

       nums[j]=nums[j+1];

             nums[j+1]=temp;

       }

     }

   }

  printf("排序后的数字为:");

   //利用循环遍历输出

   for(i=0;i<5;i++){

    printf("%d\t",nums[i]);

   }

 

二维数组

  • 二维数组可以看作是由一维数组的嵌套而构成的

二维数组: 一维数组中的值为一个数组.

      声明: 数据类型 数组名[rowsize][colsize];

      int nums[4][2];

声明并赋值:  

      int nums[4][2]={{10,11},{20,21),{30,31},{40,41}}; 正确

      int nums[][2]={{10,11},{20,21),{30,31},{40,41}}; 正确

      int nums[4][]={{10,11},{20,21),{30,31},{40,41}}; 错误

 

示例:声明一个三行三列的二维数组用于保持用户输入的整型数据,打印用户输入的数据并计算对角线之和

 

int nums[3][3];

   int i,j,sum=0;

   //循环获取用户输入的数据,并将其数据保存到二维数组中

   for(i=0;i<3;i++){

  for(j=0;j<3;j++){

  printf("请输入第%d行第%d列数据\n",i+1,j+1);

        scanf("%d",&nums[i][j]);

  }

   }

   //循环遍历二维数组的数据,并打印成矩形

   for(i=0;i<3;i++){

      for(j=0;j<3;j++){

      printf("%d\t",nums[i][j]);

      if(i==j){

     sum+=nums[i][j];

         }

      }

      printf("\n");

   }

   printf("二维数组对角线之和为%d",sum);

posted on 2017-03-20 22:11  神武飞扬  阅读(145)  评论(0编辑  收藏  举报