数组——C语言

目录

数组的引入

一维数组 

一维数组的定义和引用

一维数组的初始化方式

编程案例:

二维数组

怎样定义二维数组?

二维数组的初始化

编程案例


数组分为一维数组、二维数组以及多维数组。

数组的引入

C语言用同名的带下标的变量组成一个数组, 带下标的变量由数组名和用方括号括起来的下标来表示, 称为数组元素, 同一数组的各个元素只是下标不同, 通过数组名和下标可直接访问数组的每个元素。

数组是由具有固定数目的同类型的变量按一定顺序排列而构成的。

 像简单变量一样,  数组元素必须先定义后引用。

要使用数组,必须在程序中先定义数组,即通知计算机 :①由哪些数据组成;②数组中有多少元素;③属于哪个数据类型。否则计算机不会把一批数据作为数据处理。

一维数组 

一维数组的定义和引用

定义:当数组的元素只带一个下标时

形式:元素类型名  数组名[常量表达式]

        例:int  a[5];

        它表示定义了一个整型数组,数组名为a,此数有5个整型元素。

 关于"[]"的解释说明:

①方括号[ ]括起来的常量表达式的值为该数组含数组元素的个数, 即数组长度; 表达式可含常量和符号常量, 不允许有变量。

②下标法表示数组中的某个元素,从0开始计数。

如:a[5]数组

a[0]a[1]a[2]a[3]a[4]

存储方式:一维数组各元素按下标的顺序 连续地分配在内存单元之中。

一维数组的初始化方式

(1)全部赋值:在定义数组时对全部数组元素赋予初值。

如:

        int a[6]={0,1,2,3,4,5}

即 a[0]=0;a[1]=1;a[2]=2;...以此类推

"{}"里的所有数值统称为初始化列表

(2)部分赋值:部分数组元素赋初值,剩余部分系统自动置0。

如:

        int a[6]={0,1,2,3};        //只提供了4个初值,系统自动给后两个元素赋值为0

(3)初始化成0。

如:

        可以写成 int a[6]={0,0,0,0,0,0};

        或 int a[6]={0};        //未赋值的部分元素自动设为0

(4)其他:在对全部数组元素赋初值时,由于数组的个数以已经确定,因此可以不指定数组长度。

        注意:当初值个数多于数组元素个数时,编译出错。

如:

        int a[5]={0,1,2,3,4,5};  

        /*error: too many initializers in main function*/ 


编程案例:

   题目:  对10个数组依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。

代码: 

#include<stdio.h>

    int main()

    {

        int i,a[10]={};        //定义一个变量和一个数组

        for(i=0;i<10;i++)       //对数组元素a[0]~a[9]进行赋值

            a[i]=i;

        for(i=9;i>0;i--)        //逆序输出
        {
            printf("%d,",a[i]);

        }printf("\n");
        return 0;
    }

运行结果:

 


二维数组

怎样定义二维数组?

二维数组定义的一般形式为:

       类型说明符  数组名[常量表达式][常量表达式];

例如:

int a[3][4];

以上定义了一个整型的二维数组,第一维(行)有3个元素,第二维(列)有4个元素。

注意: 

C语言中,二维数组中元素的排列顺序是按行存放的,即在内存中先顺序存放第1行的元素,接着再存放第2行当元素,以此类推......


二维数组的初始化

 (1)分行给二维数组赋初值;

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

(2)可以将所有数据写在一个花括号内,按数据组元素在内存中的排列顺序对各元素赋初值;

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

(3)可以对部分元素赋初值;

如:        int a[3][4]={{1},{5},{9}};         

        或    int a[3][4]={{1},{5,6}};

        或    int a[3][4]={{1},{},{9}};

其余元素自动补0

(4)如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维(行)的长度可以不指定,但第二维(列)的长度不能省略;

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

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

数组会根据数据总个数和第二维(列)的长度算出第一维(行)的长度。数组一共有12个元素,没行4列,显然可以确定行数为3。 


编程案例

 有一个3×4的矩阵,要求编程序求出其中最大的那个元素的值,以及其所在的行号和列号。

解题思路:可以用“打擂台算法”。先让a[0][0]做“擂主”,把它的值赋给变量max,max用来存放当前已知的最大值 ,在开始时还未进行比较,把最前面的元素认为是当前值最大的。然后让下一个元素a[0][1]与max进行比较,如果a[0][1]>max,就把它赋值给max,取代max的原值。以此类推......

程序: 

#include<stdio.h>

    int main()
    {

        int max,i,j,row,cloum;
        int a[3][4]={{2,9,11,3},{-8,5,-4,6},{-13,19,1,7}};  //定义一个数组并且赋初值

        max=a[0][0];    //先认为a[0][0]最大
        for(i=0;i<3;i++){
            for(j=0;j<4;j++){
                if(a[i][j]>max){    //进行比较
                    max=a[i][j];
                    row=i;     //记下行号
                    cloum=j;    //记下列号
                }
            }
        }

        printf("max=%d,row=%d,cloum=%d",max,row,cloum);
    }

运行结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值