zoukankan      html  css  js  c++  java
  • 2_C语言中的数据类型 (九)数组

    1          数组

    1.1       一维数组定义与使用

       int array[10];//定义一个一维数组,名字叫array,一共有10个元素,每个元素都是int类型的

     

       array[0] = 20;

       array[1] = 30;

       array[9] = 80;

     

       //array[10] = 100;//错误,没有 array[10]这个元素

    1.2       数组在内存的存储方式

    数组在内存中就是一段连续的空间,每个元素的类型是一样的

    1.3       一维数组初始化

    int array[10] = { 100, 1, 5, 3, 4, 5, 6, 7, 8, 0 };//定义数组的同时为数组的成员初始化值

    int array[10] = { 3, 7, 9 };//将数组的前三个元素赋值,其余元素置为0

    int array[10] = { 0 };//将数组所有的元素都置为0

       int i;

       for (i = 0; i < 10; i++)

       {

          array[i] = 0;//通过循环遍历数组的每个元素,将元素的值置为0

       }

    1.4       二维数组定义与使用

    int array[2][3];//定义了一个二维数组,有两个array[3]

    1.5       二维数组初始化

    int a[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };

    #include <stdio.h>
    
    #pragma warning(disable:4996)
    
    int main01()
    {
        short array[10];//定义一个一维数组,名字叫array,一共有10个元素,每个元素都是int类型的
    
        array[0] = 20;
        array[1] = 30;
        array[9] = 80;
    
        //array[10] = 100;//错误,没有 array[10]这个元素
    
        printf("%d
    ", array[1]);
    
    
        int i;
        for (i = 0; i < 10; i++)
        {
            array[i] = i;//array[0] = 0;, array[1] = 1, array[9] = 9;
        }
    
        printf("%p
    ", array);
    
        return 0;
    }
    
    int main02()//数组初始化
    {
        //int array[10] = { 100, 1, 5, 3, 4, 5, 6, 7, 8, 0 };//定义数组的同时为数组的成员初始化值
        //int array[10] = { 3, 7, 9 };//将数组的前三个元素赋值,其余元素置为0
        int array[10] = { 0 };//将数组所有的元素都置为0
    
    
    
        //printf("%p
    ", array);
        int i;
        for (i = 0; i < 10; i++)
        {
            scanf("%d", &array[i]);// = 0;//通过循环遍历数组的每个元素,将元素的值置为0
        }
    
    
        for (i = 0; i < 10; i++)
        {
            printf("array[%d] = %d
    ", i, array[i]);
        }
        return 0;
    }
    
    int main03()//求数组中最大元素的值,和最大值对应的数组下标
    {
        int array[10] = { 32, 45, 643, 12, 56, 2000, 78, 22, 69, 10 };
        int max = array[0];
        int i;
        for (i = 1; i < 10; i++)//想找最大的值,一定要把数组先遍历一遍
        {
            if (max < array[i])
                max = array[i];
        }
        printf("max = %d
    ", max);
        return 0;
    
    }
    
    int main04()//求数组中最小元素的值,和最小值对应的数组下标
    {
        int array[10] = { 32, 45, 643, 12, -56, 2000, 78, 22, 69, 10 };
        int min = array[0];
        int index = 0;//在没有遍历数组之前,默认数组的第0号元素就是最小的元素
        int i;
        for (i = 1; i < 10; i++)//想找最小的值,一定要把数组先遍历一遍
        {
            if (min > array[i])
            {
                index = i;
                min = array[i];
            }
        }
        printf("min = %d, index = %d
    ", min, index);
        return 0;
    
    }
    
    int main05()//求数组中所有元素的和
    {
        int array[10] = { 31, 5, 43, 12, 6, 2, 8, 21, 3, 10 };
        
        int i;
        int sum = 0;//存放数组和的变量
        for (i = 0; i < 10; i++)
        {
            sum += array[i];
        }
        printf("sum = %d
    ", sum);
        return 0;
    
    }
    
    int main06()//求数组中大于平均数的元素和下标
    {
        int array[10] = { 31, 5, 43, 12, 6, 2, 8, 21, 3, 10 };
    
        int i;
        int sum = 0;//存放数组和的变量
        for (i = 0; i < 10; i++)
        {
             sum += array[i];
        }
        int avg = sum / 10;
        printf("avg = %d
    ", avg);
    
        for (i = 0; i < 10; i++)
        {
            if (array[i] > avg)
            {
                printf("%d, %d
    ", array[i], i);
            }
        }
        return 0;
    
    }
    
    int main()//将数组元素逆置,
    {
        int array[10] = { 31, 5, 43, 12, 6, 2, 8, 21, 3, 10 };
    
        //
    
        //int tmp = array[1];//中间变量实现两个值的互换
        //array[1] = array[0];
        //array[0] = tmp;
    
    
        int min = 0;//数组最小下标
        int max = 9;//数组的最大下标
        while (min < max)//两头往中间堵
        {
            int tmp = array[min];
            array[min] = array[max];
            array[max] = tmp;
            min++;
            max--;
        }
    
    
        int i;
        //for (i = 0; i <= 4; i++)//从头往中间走
        //{
        //    int tmp = array[i];
        //    array[i] = array[9 - i];
        //    array[9 - i] = tmp;
        //}
    
    
        for (i = 0; i < 10; i++)
        {
            printf("array[%d] = %d
    ", i, array[i]);
        }
        return 0;
    }
    #include <stdio.h>
    
    int main01()//求100到999之间的水仙花数
    {
        int i;
        for (i = 100; i < 1000; i++)
        {
            int i1 = i % 10;//求个位数
            int i2 = i / 10 % 10;//求10位数
            int i3 = i / 100;//求100位数
            if ((i1 * i1 * i1 + i2 * i2 * i2 + i3 * i3 * i3) == i)
                printf("%d
    ", i);
        }
        return 0;
    }
    
    int main02()//求一个int数组中,所有奇数元素的和
    {
        int array[10] = { 2, 4, 3, 78, 13, 12, 5, 9, 10, 15 };
        int i;
        int sum = 0;
        for (i = 0; i < 10; i++)
        {
            if ((array[i] % 2) == 1)
            {
                sum += array[i];
            }
        }
        printf("sum = %d
    ", sum);
        return 0;
    }
    
    int main()//求从3到100之间所有素数
    {
        int i;
        //素数是除了1和自己以外,不能被其他整数整除的整数
        for (i = 3; i < 100; i++)
        {
            int j;
            int status = 0;
            for (j = 2; j < i; j++)//判断i是否为素数
            {
                if ((i % j) == 0)
                {
                    status = 1;
                    break;
                }
            }
    
            if (status == 0)//代表这是个素数
            {
                printf("%d
    ", i);
            }
        }
        return 0;
    }
    
    //14
    //2 ---- 13
    #include <stdio.h>
    
    int main()
    {
        //int array[2][3];//定义了一个二维数组,有两个array[3]
    
        int array[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };//定义一个二维数组的同时初始化成员
        //array[0][0] = 1;
        //array[1][0] = 4;
        //int array[2][3] = { 0 };//将二维数组中每个元素的值都初始化为0
        //array[0][0] = 0;//给第0行,第0列的元素赋值
        //array[1][2] = 0;//给第1行,第2列的元素赋值
    
        //int i[3][7];//二维数组更象一个表格
    
        printf("%d
    ", sizeof(array[0][0]));
    
    
        int i, j;
        for (i = 0; i < 5; i++)
        {
            for (j = 0; j < 3; j++)
            {
                printf("array[%d][%d] = %d
    ", i, j, array[i][j]);
            }
        }
    
        printf("--------------------------------
    ");
        
        int array1[3][5] = { {3, 5, 8, 1, 4}, {34, 2, 67, 21, 6}, {7, 8, 3, 10, 20} };
        for (j = 0; j < 5; j++)
        {
            int sum = 0;
            for (i = 0; i < 3; i++)
            {
                sum += array1[i][j];
            }
            printf("%d
    ", sum);//打印列的和
        }
    
        for (i = 0; i < 3; i++)
        {
            int sum = 0;
            for (j = 0; j < 5; j++)
            {
                sum += array1[i][j];
            }
            printf("%d
    ", sum);//打印行的和
        }
    
        return 0;
    }

    资料来源:传智播客 仅供学习研究

  • 相关阅读:
    LeetCode:Plus One
    LeetCode:Text Justification
    LeetCode:Sqrt(x)
    LeetCode:Climbing Stairs(编程之美2.9-斐波那契数列)
    LeetCode:Simplify Path
    LeetCode:Edit Distance
    LeetCode:Set Matrix Zeroes
    LeetCode:Search in Rotated Sorted Array I II
    LeetCode:Search a 2D Matrix
    LeetCode:Sort Colors
  • 原文地址:https://www.cnblogs.com/wuchuanying/p/6347837.html
Copyright © 2011-2022 走看看