<四> 数组--Array

【1】首先我们了解一下什么是数组

  • 数组:由若干个数据类型相同的元素组成的集合。

【2】当然还有数组是怎么定义的?

  • 定义:数据类型  数组名[元素个数];
    • eg:int  a[5];
  • 元素:a[0] ~ a[n-1]

【3】接下来我们看下数组定义的几种方式

  1. int a[5] = {0,1,2,3,4};
  2. int a[ ] = {0,1,2,3};     //==> int a[4];
  3. #define N 7        int a[N];
  4. int a[n];           //n为变量时,不能初始化
  5. int a[ ];  //错误!!!

【4】初始化

  1. 可以全部赋值,但不可以空间越界多赋值
  2. 局部赋值:没有赋值的部分默认为0
  3. 局部变量且不初始化:则数据元素为随机值

【5】性质:

  1. 元素类型相同
  2. 存储空间连续
  3. 数组名是首元素的地址

【6】数组名

  1. 数组名是首元素的地址
  2. sizeof(数组名); //求空间大小
  3. sizeof(数组名)/sizeof(a[0]); //求元素个数

【7】注意:数据越界访问时不报错。

  • int a[5]; ------------------->  a[5];

【8】冒泡排序

  1. 比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止――第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上
  2. 对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置
  3. 重复上述过程,共经过n-1趟冒泡排序后,排序结束

第一种方法

 1     int i,j;
 2     for(i=0; i<N-1; i++)
 3     {
 4        for(j=0; j<N-i-1; j++)
 5         {
 6           if(a[j] > [j+1])
 7            {
 8             t = a[j];
 9             a[j] = a[j+1];
10             a[j+1] = t;
11             }
12         }
13     }

第二种方法

 1     int i,j; 
 2     for(i=0; i<N-1; i++)
 3     {   
 4         for(j=i+1; j<N; j++)
 5         {   
 6                 if(a[i] > a[j])
 7            {   
 8                 a[j] ^= a[j+1];             
 9                 a[j+1] ^= a[j];
10                 a[j] ^= a[j+1];
11             }   
12         }   
13     }   

【9】二维数组

  • 1--- int a[3][4] = {0};
    • int a[][2] = {0,1,2,3,4}; 《===》 int a[3][2];行数可以省略
  • 2--- 数据类型相同
  • 3--- 数据存储是连续的;
  • 4--- 数组名代表数组的首元素地址(首地址);
  • 5--- a[0]、a[1]、a[2] 代表每一行的首地址;

【10】char

  • char a[10] = “hello”          //以字符串常量直接赋值,只能在对数组初始化的时候
  • char b[] = "acb";               //size = 4
  • char c[] = {'A','B','C'};       //以printf("%s",c)打印的结果不可预知,最后没有'\0'

输出:printf("%c"); printf("%s"); puts();

输入:scanf("%c"); scanf("%s"); gets();

posted on 2018-03-10 19:09  就是菁可爱哦  阅读(138)  评论(0编辑  收藏  举报

导航