首页 > 代码库 > C语言基础04

C语言基础04

什么叫数组呢?我们的第一反应是很多数组组合在一起就是数组,字面意思,当然不止于数字,多个字符也是可以的.

数组属于构造类型 .相同类型的若干变量组织起来.

类型说明符 数组名 [常量表达式]  

int  array[] ={0}           //定义一个空数组 .

1.数组的类型实际上是指数组元素的取值类型,对于同一数组,所以的数据类型都是一样的

int array1[] = {78,‘o‘,10};    //o会转化为ASCII值,所以也是整形

//也是可以,是不是于上面的话矛盾呢?其实不是的,他说明的是里面的数组元素 都会转化为同一数据类型,不是说开始输入就全部相同

int array2[] ={ 67,32.3,92,16 };    

2.方括号的表示元素的个数,不能用变量来表示,只能使用常量或者符号常量.

int a  = 3;

int array[a+1]   ={...}        //肯定要报错       

3.打印数组是需要使用for循环,而不能简单的使用printf()函数

for(int i =0 ;i < strlen(array);i++){

  printf("array[%d] = %d\n",i,array[i]);

}

4.数组中下标越界

float score[] ={34.4,63.1,98.2,65.3,93.7,39.5};

printf("%f\n",score[56]);  //很明显score的下标小于56,在C语言中警告,但是在OC中会报错,需要注意‘

5*.冒泡排序法

看了好多人写的冒泡博客,都是只写个程序,没什么具体的执行过程:

初始: 34 89 12 45 6 27 52 69  八个数组进行从小到大的排序

    34 89 12 45 6 27 52 69    //第一位34第二位89比较, 34<89 不用换 

      34 12 89 45 6 27 52 69    //第二位89和第三位12比较, 89 > 12 需要换

      34 12 45 89 6 27 52 69    //第三位89和第四位45比较, 89 > 45 需要换 

        34 12 45 6 89 27 52 69    //...

          34 12 45 6 27 89 52 69    //...

            34 12 45 6 27 52 89 69    //...

              34 12 45 6 27 52 69 89    //..   @3

到此第一轮循环结束 ,89最大的值出来了,使用7次循环,然后我们在根据  @3的那组数字在来一遍 知道最后就剩2个数组 ,不用在判断了.

通过判断需要使用八轮 这样的循环,所以for循环嵌套

for(int i = 0 ; i < n-1 ;i++){   //n代表个数 i从0开始,从上面的规律就可以看出i< n-1  , i 代表内部循环的轮数

  for(int j =0 ; j <n-i-1;j++ ) {   //第一轮和7次循环  7+1 =8 8就是n,但是最后剩2个数字不用判断 h或者(for j =n-1;j>=n;j--){}

      //交换数值,在内部循环中交换

      if( array[j] > array[j+1]){

        int temp =array[j];

        array[j] = array[j+1];

        array[j+1] =temp;

      }

  }  

}

5.字符数组

char str[] ="Iphone5S";           //@1

char str1[] = {‘I‘,‘p‘,‘h‘,‘o‘,‘n‘,‘e‘,‘5‘,‘S‘};  // @2

这两种方式来声明字符str和str1是差不多相同,唯一不同的是@1后面还有一个隐藏的结束符号.完整的Str="Iphone5S\0"

 

C语言基础04