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\n", array[1]);


    int i;
    for (i = 0; i < 10; i++)
    {
        array[i] = i;//array[0] = 0;, array[1] = 1, array[9] = 9;
    }

    printf("%p\n", 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\n", 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\n", 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\n", 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\n", 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\n", 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\n", avg);

    for (i = 0; i < 10; i++)
    {
        if (array[i] > avg)
        {
            printf("%d, %d\n", 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\n", 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\n", 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\n", 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\n", 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\n", sizeof(array[0][0]));


    int i, j;
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("array[%d][%d] = %d\n", i, j, array[i][j]);
        }
    }

    printf("--------------------------------\n");
    
    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\n", sum);//打印列的和
    }

    for (i = 0; i < 3; i++)
    {
        int sum = 0;
        for (j = 0; j < 5; j++)
        {
            sum += array1[i][j];
        }
        printf("%d\n", sum);//打印行的和
    }

    return 0;
}

 

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

posted on 2017-01-24 21:20  金秀  阅读(512)  评论(0编辑  收藏  举报

导航