前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言笔记(7)数组篇

C语言笔记(7)数组篇

作者头像
是小北a
发布2024-05-02 13:33:36
1440
发布2024-05-02 13:33:36
举报
文章被收录于专栏:小北的博文

一、初识数组

1.数组的概念

数组是由一系列类型相同的数据对象依次排列组合而成

组成数组的数据对象被称作数组的元素

重点:

  • 依次排列
  • 类型相同

2.声明数组

代码语言:javascript
复制
//格式:
元素类型 数组名[元素数量];
//示例:

char c[5];
int n[10];
long l[3];
float f[2];
double df[1];

3.数组初始化

代码语言:javascript
复制
//格式如下:

元素类型 数组名[元素数量] = {逗号分割的元素内容};

//示例:

int arr[10] = {1,2,3,4,5,6,7,8,9,0};

//等号右边被称为初始化列表,初始化列表写明了数组的元素分别需要被初始化为哪些值。

注意事项:

  1. 如果元素内容小于元素数量,那么会被自动填补为0
  2. 如果元素内容多于元素数量,那么将会无法编译
  3. 元素数量可以不填写,让初始化列表决定数组长度

4.访问数组

代码语言:javascript
复制
//格式:

数组名[下标] 

//示例代码:
int arr[10] = {1,2,3,4,5,6,7,8,9,0};
printf("%d\n", arr[0]);
printf("%d\n", arr[1]);
printf("%d\n", arr[2]);
printf("%d\n", arr[3]);
printf("%d\n", arr[4]);
printf("%d\n", arr[5]);
printf("%d\n", arr[6]);
printf("%d\n", arr[7]);
printf("%d\n", arr[8]);
printf("%d\n", arr[9]);

注意事项:

  1. 数组下标是从0开始的,如果有九个元素,那么下标为10

5.修改数组的值

代码示例:

代码语言:javascript
复制
int arr[10] = {};
printf("%d\n", arr[5]);
arr[5] = 123;
printf("%d\n", arr[5]);

注意事项:

  1. 数组越界错误

当数组元素有一个固定数量时,请勿访问或修改数组元素内以外的元素。C语言编译器不会检查数组是否越界。

  1. 数组不一定初始化,但是之后需要赋值,避免使用无意义数值

6.数组所占空间大小

数组所占的空间 = 单个元素所占空间大小*数组元素个数

7.数组的整体赋值

数组不能整体赋值,且初始化列表智能存在于初始化。那么如何赋值整个数组的数据呢?

有两种方法:

  1. 使用循环遍历赋值
代码语言:javascript
复制
int arr1[];
int arr2[1,2,3,4,5];
for (i=0;i<4;i++);
    arr1[i]=arr2[i]
  1. 使用memcpy内存复制函数
代码语言:javascript
复制
//memcpy函数格式

memcpy(目标数组, 原始数组, 需要复制多少字节数据);

//示例:

memcpy(arr1, arr2, sizeof(arr1));

/*注意事项
使用memcpy函数需要引入头文件<memory.h>
假设需要复制的数据字节数为N;
目标数组大小不能小于N,否则没有足够空间存放数据;
原始数组的数据大小不能小于N,否则将复制无意义内容;
*/

8.小练习

逆序输出一组数字

代码语言:javascript
复制
#include<stdio.h>
void main(){
	int i;
	int a[10] = {0};
	for(i = 0;i<10;i++){
		printf("输入数字:");
		scanf("%d",&a[i]);
	}
    
	printf("逆序数字排列为:");
    
	for(i = 9;i>=0;i--){
		printf("%d ",a[i]);	
	}
}

二、二维数组

2.1 二维数组的概念

二维数组就是由多个一维数组组成的数组int score[5][10]

二维数组的每个元素都是一维数组

一维数组的每个元素表示的都是一个储存区

在定义一个二维数组的时候,需要提供两个整数

前一个整数表示一维数组的个数,后一个整数表示一维数组里的储存区个数

数据类型表示的是每个储存区的类型

img
img
代码语言:javascript
复制
int score[5][10]
//定义了1个二维数组,一共分为了5个数组.每个一维数组中有10个int类型的储存区

2.2 二维数组的格式

代码语言:javascript
复制
//格式:
元素类型 数组名[二维数组长度][一维数组长度] = {{...},{...}...};
	二维数组长度 = 二维数组中有几个一维数组
    一维数组长度 = 一维数组中有几个储存区
//举例:
        int a[3][4] = {{1,2,3,4,},{5,6,7,8},{9,10,11,12}};

//可以把二维数组当作一维数组进行初始化,二维数组本质上还是一维数组
		int mat[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
		int mat[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

2.3 二维数组的使用

代码语言:javascript
复制
int mat[3][4] = {{1,2,3,4},[5,6,7,8],[9,10,11,12]};
//mat[0]表示第一个一维数组,是第一个一维数组的名字
//mat[0][1]表示访问mat[0]一维数组下标为1的储存区

二维数组名称后可以只写一个下标,这个下标作为组下标使用,这个写法可以表示组下标对应组里第一个储存区的地址

二维数组名称后加组下标也可以作为一维数组名称使用,这个一维数组里包含组下标对应组里所有的储存区

2.4 随机数

代码语言:javascript
复制
#include <stdlib.h>		//srand() rand()
#include <time.h>		//time()
srand(time(0));			//设置一个随机数种子

rand()			//表示一个随机的整数
rand() % 10		//表示的是0~9之间随机数

2.5 小练习

双色球

获取6个1-33之间的数字(不可重复)作为红球

获取1个1-16之间的数字作为蓝球

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand(time(NULL)); // 设置随机数种子

    // 生成6个1-33之间的不重复的随机数作为红球
    int red_balls[6];
    for (int i = 0; i < 6; i++) {
        int temp;
        while (1) {
            temp = rand() % 33 + 1;
            int flag = 0;
            for (int j = 0; j < i; j++) {
                if (red_balls[j] == temp) {
                    flag = 1;
                    break;
                }
            }
            if (!flag) {
                red_balls[i] = temp;
                break;
            }
        }
    }

    // 生成1个1-16之间的随机数作为蓝球
    int blue_ball;
    blue_ball = rand() % 17 + 1;

    // 输出结果
    printf("红球:");
    for (int i = 0; i < 6; i++) {
        printf("%d ", red_balls[i]);
    }
    printf("蓝球:%d", blue_ball);

    return 0;
}

2.6 小结

img
img
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023/10/07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、初识数组
    • 1.数组的概念
      • 2.声明数组
        • 3.数组初始化
          • 4.访问数组
            • 5.修改数组的值
              • 6.数组所占空间大小
                • 7.数组的整体赋值
                  • 8.小练习
                  • 二、二维数组
                    • 2.1 二维数组的概念
                      • 2.2 二维数组的格式
                        • 2.3 二维数组的使用
                          • 2.4 随机数
                            • 2.5 小练习
                              • 2.6 小结
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档