C语言中的数组

来源:互联网 发布:26岁零基础转行大数据 编辑:程序博客网 时间:2024/06/06 12:57

 一维数组

数据类型数组名[] = { };

在标准C语言环境下,数组大小只能用常量

int array[1000]={};    for (int i =0 ; i < 1000; i++) {         printf("%d ", array[i]);    }    //打印出来是随机数,只是大部分是0

第一种:直接初始化赋值:

    int array[10]={1,2,3,4};    for (int i = 0; i < 10; i ++) {        printf("%d ", array[i]);    }
运行结果:(后面没定义的都补0,直到达到数组的长度)

1 2 3 4 0 0 0 0 0 0 


直接给所有值赋值0

    int array[10]={0};

第二种:先声明后赋值:

   int array[10];    //取值:数组名[下标] 下标 :0 - (n - 1)    //输入数,填满数组    for (int i = 0; i < 10; i ++) {        printf("第%d个:", i+1);        scanf("%d",&array[i]);    }    //打印数组    for (int i = 0; i < 10 ;i ++ ){        printf("%d ", array[i]);    }
运行结果:(需要手动输入的,我这里输入了。)

1个:2

2个:1

3个:1

4个:1

5个:23

6个:123

17个:2321

8个:21

9个:12

10个:12

2 1 1 1 23 123 12321 21 12 12 

Program ended with exit code: 0


举例1:找出数组中最大的值

    int array[10]={5,20,15,23,10};    int max=array[0];    for (int i =0 ; i < 5 ; i ++) {        if (max<array[i]) {            max=array[i];        }    }    printf("%d",max);
运行结果:

23

Program ended with exit code: 0


举例2:初始化一个数组,元素为60 85.5 90 56 100 67,求和以及平均值

因为有小数,就用了float,其中sizeof是我对数组大小的访问,对结果没有任何影响

float array[]={60,85.5,90,56,100,67};    float sum=0,pi;    for (int i = 0 ; i < 6 ; i ++) {        sum+=array[i];    }    pi=sum/6;    printf("%lu\n",sizeof(double));    printf("%lu\n",sizeof(float));    printf("%lu\n",sizeof(array));    printf("sum=%.2f,pi=%.2f", sum,pi);

运行结果:

8

4

24

sum=458.50,pi=76.42

Program ended with exit code: 0


数组的排序

冒泡排序,最简单的排序

    int array[5]={1,10,9,16,2};    //思路:相邻的两个书比较,从小到大的话,小的排到相邻的那个的前面,一轮一轮的比较,数据比较少的话可以用这种方法    //第一次:1 9 10 2 16; 比较次数:4    //第二次:1 9 2 10 16; 比较次数:3    //第三次:1 2 9 10 16; 比较次数:2    //第三次:1 2 9 10 16; 比较次数:1    for (int i = 0 ;  i < 5 ; i ++) {        for (int j = 0 ; j < 5-i-1 ; j ++) {            if (array[j] > array[j+1]) {                //要用j而不是i(相邻的两个数互换)                int temp = array[j];                array[j] = array[j+1];                array[j+1] =  temp;            }        }    }    for (int i = 0; i < 5; i ++) {        printf("%d ",array[i]);    }
运行结果:

1 2 9 10 16 

Program ended with exit code: 0


简便版的选择排序

   for (int i = 0; i< 5; i ++) {        for (int j = i; j< 5; j ++) {            if (array[i] > array[j]  ) {                int temp = array[i];                array[i] = array[j];                array[j] = temp;            }        }               printf("%d ",array[i]);    }

运行结果:

1 2 9 10 16 

Program ended with exit code: 0

二维数组
二维数组一般这样定义:

<pre name="code" class="objc"> int sz[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};

其中,3和4是可以改变的,3是有多少行,4是有对少列,写成这样可能比较好理解:

 int sz[3][4] = { {1, 2, 3, 4},
<span style="white-space:pre"></span>  {5, 6, 7, 8},
<span style="white-space:pre"></span>  {9,10,11,12}};

这里就通过举例来看它吧

同样是找出数组中的最大值

    int array[][4] ={1,2,3,4,5,6,7,8,9};//    //最好给max赋值就是数组里面的值避免错误    int max=array[0][0];    for (int i = 0 ; i < 3; i ++) {        for (int j = 0; j < 4; j ++) {            if(max < array[i][j]){                max = array[i][j];            }        }            }        printf("max=%d",max);
运行结果:

max=9

Program ended with exit code: 0


上面是一种方式,我们现在用一个循环打印出数组中的值,并得到最大的那个数

    int array[][4] ={1,2,3,4,5,6,7,8,9};//    //最好给max赋值就是数组里面的值避免错误    int max=array[0][0];    //用二维数组用一维数组的方式打印出来,直接把二维转成一维的方式去打印就行了,一行一列打出所有数据    for(int i =0 ;i<12;i++){        //变成一维打        printf("%d  ",array[0][i]);        if (max<array[0][i]) {            max=array[0][i];        }//        printf("%d ",array[0][0]);          }    printf("\n");   printf("max=%d",max);
运行结果:

1  2  3  4  5  6  7  8  9  0  0  0  

max=9

Program ended with exit code: 0



字符数组

字符数组就是个字符串

可以用几种方式定义:

    char string[] = "hello";    char string1[6] = {'h','e','l','l','o'};
我们下面举例说明一下:(比较字符串是否相同,就是比较它里面的字符是否相同)

至于string1里面为什么是6呢,因为字符串后面都有一个'\0',要占一个字符,如果小于6的话前面的照样输出,后面的会出现乱码

    char string1[6] = {'h','e','l','l','o'};    char string3[] = "wrold";    //max不能接受字符串    char max;    for(int i = 0;i < 5 ;i ++){        if (string1[i]>string3[i]) {            printf("大");        }else if(string1[i]<string3[i]){            printf("小");        }else{            printf("中");        }    }
运行结果:

小小小中大

Program ended with exit code: 0


在C语言中也有专门的字符串的运算方法

    //strcmp(<#const char *#>, <#const char *#>) 比较大小    //strcpy(<#char *#>, <#const char *#>) 复制    //strlen(<#const char *#>) 获取字符串长度    //strcat(<#char *#>, <#const char *#>) 链接
这里就不一一举例了

1 0