IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 数组——C语言 -> 正文阅读

[C++知识库]数组——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);
    }

运行结果:


  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 01:47:57  更:2022-09-15 01:50:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:49:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码