C语言第四讲(Array数组)

来源:互联网 发布:七彩虹淘宝旗舰店 编辑:程序博客网 时间:2024/05/17 03:38

一 :数组:用于存储多个相同数据类型的有序队列

数组的定义的格式:    数据类型      数组名[元素个数] = {数值1,  数值2,  数值3,... ...}

整型数组,浮点型数组等

注:   !!数组越界很危险

数组定义时,元素个数可以省略,如果省略,元素个数由赋值的个数决定

例:int e[]={1,2,3,4};//有4个元素

    int g[]={0};//有1个元素

    int h[]={};//有0个元素,无意义

二:sizeof:      sizeof(表达式 或 数据类型)

    1.sizeof:用于计算表达或数据类型所占的字节数

例: unsigned long length = sizeof(char);

    printf("char:%lu\n",length);

    printf("short:lu\n",sizeof(short));

    printf("int:%lu\n",sizeof(int));

    printf("long:%lu\n",sizeof(long));

    printf("float:%lu\n",sizeof(float));

    printf("double:%lu\n",sizeof(double));


 2.sizeof:用于计算变量所占的字节数

例:    int i = 0;

    printf("%lu\n",sizeof(i));


3.sizeof:用于计算数组所占的字节数

数组所占的字节数 = 元素所占的字节数*元素个数

例:          int j[5] ={1, 2, 3, 4, 5};//数组中元素和元素之间要加逗号

                     printf("%lu\n",sizeof(j));

三:数组的使用

1.数组是一个整体,不能直接参与运算

2.我们可以通过访问数组中的元素来达到运算的目的

因为数组时有序的,通过访问下标访问数组中的元素,数组元素的下标从0开始

数组元素下标的范围[0,   元素个数-1]

格式是:数组名[下标]

例:     int array[5]={1, 2, 3, 4, 5};

    //第一个元素:array[0]

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

    //array[5],数组越界


​3.打印数组中的每个元素

遍历数组​ for (int i=0; i<5; i++) {

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

    }

    printf("\n");

给数组中的某个元素赋值

    array[2] = 6;

4.定义数组和访问数组元素的区别

    1).定义数组必须有数据类型

    2).定义数组时,元素个数可以忽略;访问数组元素时,元素下标不能省略

四:冒泡排序

    int a[7] ={12, 38, 28, 8, 67, 26, 55};

    //外层循环控制趟数,比较的趟数(数组元素个数-1)

   BOOL flag​ =YES;

    for (int i= 0; i<7-1&&flag;i++ ) {

flag = NO;//内层循环控制比较次数

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

            if (a[j]>a[j+1]) {//比较条件//相邻两个进行比较

       int temp = a[j];//元素交互,借助于第三个变量

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

                a[j+1]=temp;

flag = YES; 

 }   

}

}

    for (int i=0;i<7 ; i++) {//打印数组

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

    }

    printf("\n");

五:字符数组​

char string[7] = {'i', 'p', 'h', 'o', 'n', 'e'};

    字符数组,又叫字符串

    char string1[7] = "iphone";

    //注:这两种写法是完全等价的

     int b[5] = {1};//1, 0, 0, 0, 0

     字符数组没有赋值,默认为'\0'

    char s[5] ={'i'};//'i', '\0', '\0', '\0', '\0'

    字符数组的使用

    string[0]='m';

    printf("%c\n",string[3]);

     string1[0] = 'n';

    printf("%c\n",string1[4]);

   //遍历字符数组,打印每个元素

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

        printf("%c",string[i]);

    }

 printf("%\n");

​注:  %s用于打印字符数组,遇到'\0'结束

printf("%s\n",string);

    printf("%s\n",s);

六:

1.strlen:strlen(   )//计算字符串长度

    遇到'\0'就结束,'\0'不计入长度

 例:     char string[10] = "I love U";

    string[4] = '\0';

    unsigned long length = strlen(string);

    printf("length = %lu\n",length);

    

    2.     strcpy(  字符串1,字符串2)

    字符串拷贝

    把字符串2中的每一个元素依次拷贝到字符串1中,直到字符串2遇到'\0'结束

    注:字符串1要足够的大,防止越界

  例  :  char str1[10] = "I Love";

    char str2[10] = "you";

    strcpy(str1, str2);

    printf("str1:%s\n",str1);

    printf("str2:%s\n",str2);


      3.   strcat(字符串1,字符串2)

    字符串拼接

     从字符串1的第一个'\0'开始,把字符2的每个元素拼接到字符串1,直到字符串2遇到'\0'结束

     字符串1要足够大,防止越界!!!

    例:   char str1[20] = "I Love ";

    str1[2] = '\0';

    char str2[20] ="you";

    strcat(str1, str2);

    printf("str1:%s\n",str1);

    printf("str2:%s\n",str2);

    

    4.    strcmp( 字符串1,字符串2)

  字符串比较

用字符串1中的每个元素和对应位置的字符串2的元素的ASCII值相减,如果为0,就继续比较;如果不为0,就停止比较; 当对应的元素都是'\0'时,比较结束,并返回0

  

  例  : char str1[10] = "dazuo";

   char str2[10] = "laochai";

    str1[1] ='\0';

   str2[1] ='\0';

    int result = strcmp(str1, str2);

   printf("result = %d\n",result);

0 0
原创粉丝点击