一维数组、数组排序、 字符数组

1、一维数组

    数组是构造数据类型

    区分定义数组  和数组元素  (int a[10]      a[10])

    必须保证下标不能越界

    数组是一个整体,不能直接参与运算,只能对单个元素进行处理。

2、数组排序(冒泡排序)

     

 int a[7] = {3 , 1 , 7 , 23 , 12 , 87 , 2};

    

    //外层循环控制要比较的趟数,n个元素需要比较n-1次

    for (int i = 0; i < 6; i++) {

        //内层循环控制在每一趟要比较的次数,每进来一次就少比较一次

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

            //如果前一个元素比后一个大,交换位置

            if (a[j]  < a[j + 1]) {

                int temp = a[j];

                a[j] = a[j + 1];

                a[j + 1] = temp;

            }

        }

    }

    //打印排序好的数组

    for (int i = 0; i < 7; i++) {

        printf("%d " , a[i]);

    }

//选择排序

    

 int a[5] = {7 , 4 , 6 , 2 , 1};

    int k = 0;

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

        k = i;//假设第a[i]元素就是最小值

        for (int j = i + 1; j < 5; j++) {

            if (a[k] > a[j]) {

                k = j;

            }

            

        }

        

        if (i != k) {

            int temp = a[i];

            a[i] = a[k];

            a[k] = temp;

        }

    }

    

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

        printf("%-3d " , a[i]);

    }

3、字符数组

      

    char c[] = {'i' , 'P' , 'h' , 'o' , 'n' , 'e'};//长度为6

    

    //c语言字符串结束都有\0

    char a[6] = "iPhone";//长度为7  ‘\0’

    unsigned long result = strlen(a);//遇到\0 结束,\0不需要计算

    unsigned long s = sizeof(a);//sizeof()  内存大小

    //printf("%s" , a);

    //字符串所占的空间 至少要比 字符串长度大1,因为 字符串以 ‘\0’ 表示结束。系统提供的字符串处理函 数是根据 ‘\0’ 来判断字符串是否结束. 

    printf("%ld " , result);

    printf("%ld" , s);

   

     strlen() 计算字符串⻓长度

     strcpy() 字符串拷⻉贝

     strcat() 字符串拼接

     strcmp() 字符串⽐比较 

 

posted @ 2015-04-14 22:49  fengkuangIT  阅读(399)  评论(0编辑  收藏  举报