栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

浅学C++ (3)学习C语言(数组)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅学C++ (3)学习C语言(数组)

七,数组
    什么是数组:变量的组合,批量定义类型相同变量的方式
    定义:类型名 数组名[数量];
        int arr[5]; 内存中已经存在5个int类型的变量
    使用:数组名[下标]; 从0开始  范围:0~数量-1
    遍历:与for循环配合使用,使用循环变量当作下标
    数组初始化:类型名 数组名[数量] = {数值,数值,...};  int[5] = {1,2,3,4,5}
        1,因为数组的默认值是随机的,一般为了安全起见要对数组进行初始化
        2,初始化的数据过多,编译器会产生警告并丢弃多余数据
        3,初始化的数据不够,编译器会末尾补0
        4,初始化时数据可以省略,相当于给所有成员初始化为0
        5,初始化语法只能在定义数组时使用,并且只能逐个赋值,不能整体赋值(int arr[5] = 2 错误)
        6,初始化时数组的数量可以省略,编译器会自动统计初始化中数据的个数,一旦确认数组数量,后续无法改变
        sizeof(arr)/sizeof(arr[0]) 计算出数组的个数
        sizeof(arr) 数组的总字节数
        sizeof(arr[0]) 数组单个成员的字节数

八,数组越界 
    为了程序的编译,运行效率,编译器不会检查数组的下标
    数组越界的后果:
        1,段错误(核心已转储)
        2,一切正常(表现的一切正常)
        3,脏数据
    在使用数组的过程中时刻注意不要越界!!!

九,二维数组
    一维数组相当于把变量排成一排,通过编号访问
    二维数组相当于把变量排成一个矩阵,通过行号和列号访问
    定义:类型 数组名[][];
    使用:数组名[行下标][列下标];
        行下标 0~行数-1
        列下标 0~列数-1
    遍历:一般与双层for循环配合,一般外层负责遍历行,内层负责遍历列
    int arr[5][5]
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {

        }
        printf("n");
    }
    初始化: 类型名 数组名[行数][列数] = {{第一行},{第二行},{第三行}...};

十,变长数组
    定义数组时使用变量作为数组的长度,在代码编译期间数组的长度是不确定的,当运行到数组的定义函数时数组的长度才定义下来
    长度一旦确定,后面无法改变
    优点:可以根据实际情况来确定数组的长度,以此来节约内存空间
    缺点:不能进行初始化,因为初始化发生在编译时
作业1: 定义一个5*5的二维数组并初始化,找出最小值的坐标,计算出最小值周围一圈数据之和
作业2: 输入N,显示N层杨辉三角
作业3: 输入一个日期(yyyy-mm-dd),计算该日期距离1年1月1日过了多少天
#include 

int main(int argc,const char* argv[])
{
    int arr[7][7]=
    {{0,0,0,0,0,0,0},
    {0,13,13,14,15,16},
    {0,1,3,5,7,2},
    {0,34,22,56,34,33},
    {0,32,45,66,19,43},
    {0,12,45,34,3,56}
    };
    int min=arr[1][1];
    int x,y,sum;
    for(int i=1;i<6;i++)
    {
        for(int j=1;j<6;j++)
        {
            if(arr[i][j] 
#include 

int main(int argc,const char* argv[])

{
    int N;
    printf("请输入N:");
    scanf("%d",&N);
    int arr[N][N];
    for(int i=0;ij && j != 0)
            {
                arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
            }
            if(i 
#define

int main(int argc,const char* argv[])
{
    int year,month,day,sum=0,flag;
    printf("请输入年月日(yyyy-mm-dd):");
    scanf("%d %d %d",&year,&month,&day);
    int arr[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    for(int i=1;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008233.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号