【C语言】学习笔记4——数组

简介: 我直接把控制语句和循环跳过了。大致看了一下,讲得太繁琐了。这部分在后面用C写数据结构就可以练得很熟了。 1. 数组: 由数据类型相同得一系列元素组成。内存上是一片连续得存储单元。 2. 声明 int nums[5] // 内含5个int类型元素的数组 float ...

我直接把控制语句和循环跳过了。大致看了一下,讲得太繁琐了。这部分在后面用C写数据结构就可以练得很熟了。

1. 数组: 由数据类型相同得一系列元素组成。内存上是一片连续得存储单元。

2. 声明

int nums[5]           // 内含5个int类型元素的数组

float candy[365]     // 内含365个float类型元素的数组

char chars[9]         // 内含9个ichar类型元素的数组

3. 初始化

  这个小程序用了sizeof方法

  sizeof days2 得到的是数组的大小

  sizeof days2[0] 得到的是一个元素的大小

#include <stdio.h>

#define MONTHS 12

int main()
{
    
    int days[MONTHS] = {31,28,31,30,31,30,31,31,30,31,30,31};
    
    //声明一个只读数组, 一旦初始化,不能对数组里的值进行更改. 如果省略放括号中的数字,编译器会根据初始化列表中的数量来确定数组的大小 
    const int days2[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    
    int index;
    
    printf("遍历 days:\n");
    for(index = 0; index < MONTHS; index++)
    {
        printf("Month %2d has %2d days.\n", index + 1, days[index]);
    }
    
    printf("\n\n遍历 days2:\n");
    for(index = 0; index < sizeof days2 / sizeof days2[0]; index++)
    {
        printf("Month %2d has %2d days.\n", index + 1, days2[index]);
     } 
    return 0; 
}

/*
Output:
遍历 days:
Month  1 has 31 days.
Month  2 has 28 days.
Month  3 has 31 days.
Month  4 has 30 days.
Month  5 has 31 days.
Month  6 has 30 days.
Month  7 has 31 days.
Month  8 has 31 days.
Month  9 has 30 days.
Month 10 has 31 days.
Month 11 has 30 days.
Month 12 has 31 days.


遍历 days2:
Month  1 has 31 days.
Month  2 has 28 days.
Month  3 has 31 days.
Month  4 has 30 days.
Month  5 has 31 days.
Month  6 has 30 days.
Month  7 has 31 days.
Month  8 has 31 days.
Month  9 has 30 days.
Month 10 has 31 days.
Month 11 has 30 days.
Month 12 has 31 days.

*/

 

//一般初始化

int arr[6] = {0, 0, 0, 0, 0, 212};

//C99, 把 arr[5]初始化为212, 把其他初始化为0
int arr[6] = {[5] = 212};

多维数组

#include <stdio.h>
#define MONTHS 12
#define YEARS 5

int main()
{
    const float rain[YEARS][MONTHS] =
    {
        {4.3, 4.3, 4.3, 3.0, 3.0, 2.0, 1.2, 0.2, 0.2, 0.4, 2.4, 3.5, 6.6},
        {8.5, 2.2, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 0.9, 1.4, 7.3, 2.1},
        {9.1, 8.8, 5.5, 2.6, 4.4, 3.2, 4.3, 5.6, 7.9, 5.4, 6.2, 2.5, 5.6},
        {7.2, 5.3, 6.5, 3.0, 3.0, 2.0, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 1.4},
        {3.0, 3.0, 2.0, 1.2, 1.6, 2.4, 0.0, 5.2, 0.9, 0.3, 9.1, 8.8, 5.5},
        {1.2, 1.6, 2.4, 0.0, 5.2, 1.2, 1.6, 2.4, 0.0, 5.2, 6.5, 3.0, 3.0}
    };
    
    int year, month;
    float subtot, total;
    
    printf(" YEAR  RAINFALL (inches)\n");
    for(year = 0, total = 0; year < YEARS; year++)
    {
        for(month = 0, subtot = 0; month < MONTHS; month++)
            subtot += rain[year][month];
        printf("%5d %15.1f\n", 2013 + year, subtot);
        total += subtot;
    }
    printf("\n %d年到%d年%d年的总降水量为%.1f,平均每年降水量为%.1f.\n\n", 2013, 2013 + YEARS - 1, YEARS, total, total / YEARS );
    
    printf("每月平均降水量为\n\n"); 
    printf(" Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec\n");
    
    for(month = 0; month < MONTHS; month++)
    {
        for(year = 0, subtot = 0; year < YEARS; year++)
            subtot += rain[year][month];
        printf("%4.1f ", subtot / YEARS);
        
    }
    printf("\n");
     
    return 0;
}

/*
Output:
 YEAR  RAINFALL (inches)
 2013            28.8
 2014            31.9
 2015            65.5
 2016            38.3
 2017            37.5

 2013年到2017年5年的总降水量为202.0,平均每年降水量为40.4.

每月平均降水量为

 Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
 6.4  4.7  3.9  2.3  2.9  1.9  2.4  2.7  2.3  1.4  4.9  4.6

*/

 

相关文章
|
1月前
|
存储 C语言 C++
【C语言数组】
【C语言数组】
|
1天前
|
存储 编译器 C语言
【C语言基础考研向】09 一维数组
数组是一种有序集合,用于存储相同类型的数据,便于统一操作与管理。例如,将衣柜底层划分为10个格子存放鞋子,便于快速定位。在C语言中,数组定义格式为 `类型说明符数组名[常量表达式];`,如 `int a[10];` 表示定义了一个包含10个整数的数组。数组初始化时可以直接赋值,也可以部分赋值,且数组长度必须固定。数组在内存中连续存储,访问时需注意下标范围,避免越界导致数据异常。数组作为参数传递时,传递的是首地址,修改会影响原数组。
|
1天前
|
存储 C语言
【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串
本文介绍了C语言中字符数组的初始化方法及其在函数间传递的注意事项。字符数组初始化有两种方式:逐个字符赋值或整体初始化字符串。实际工作中常用后者,如`char c[10]=&quot;hello&quot;`。示例代码展示了如何初始化及传递字符数组,并解释了为何未正确添加结束符`\0`会导致乱码。此外,还讨论了`scanf`函数读取字符串时忽略空格和回车的特点。
|
4天前
|
存储 人工智能 C语言
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
本章介绍了C语言中的数组概念及应用。数组是一种存储同一类型数据的线性结构,通过下标访问元素。一维数组定义需指定长度,如`int a[10]`,并遵循命名规则。数组元素初始化可使用 `{}`,多余初值补0,少则随机。二维数组扩展了维度,定义形式为`int a[3][4]`,按行优先顺序存储。字符数组用于存储字符串,初始化时需添加结束符`\0`。此外,介绍了字符串处理函数,如`strcat()`、`strcpy()`、`strcmp()` 和 `strlen()`,用于拼接、复制、比较和计算字符串长度。
|
30天前
|
算法 C语言
C语言------数组
这篇文章是关于C语言数组的实训,包括一维数组、二维数组和字符数组的定义、赋值、输入、输出方法,并通过实例代码演示了数组的使用和一些基本算法,如冒泡排序。
C语言------数组
|
1月前
|
存储 编译器 程序员
七:《初学C语言》— 数组
【8月更文挑战第2天】本篇文章详细讲解了一维数组和二维数组的创建、使用和初始化及如何使用sizeof()计算数组中的元素个数。并附带了多个教学源码及代码练习
41 1
七:《初学C语言》— 数组
|
23天前
|
存储 编译器 数据处理
【编程秘籍】解锁C语言数组的奥秘:从零开始,深入浅出,带你领略数组的魅力与实战技巧!
【8月更文挑战第22天】数组是C语言中存储同类型元素的基本结构。本文从定义出发,详述数组声明、初始化与访问。示例展示如何声明如`int numbers[5];`的数组,并通过下标访问元素。初始化可在声明时进行,如`int numbers[] = {1,2,3,4,5};`,编译器自动计算大小。初始化时未指定的元素默认为0。通过循环可遍历数组,数组名视为指向首元素的指针,方便传递给函数。多维数组表示矩阵,如`int matrix[3][4];`。动态数组利用`malloc()`分配内存,需用`free()`释放以避免内存泄漏。掌握这些技巧是高效数据处理的基础。
43 2
|
1月前
|
存储 编译器 C语言
C语言——数组
C语言——数组
|
1月前
|
存储 C语言
C语言(数组)
C语言(数组)
31 6
|
21天前
|
存储 算法 搜索推荐
C语言中数组
C语言中数组
31 0