您现在的位置是:首页 >其他 >2023-04-22 学习记录--C/C++-数组网站首页其他

2023-04-22 学习记录--C/C++-数组

小呀小萝卜儿 2023-06-05 04:00:02
简介2023-04-22 学习记录--C/C++-数组

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、定义一维数组 ⭐️

(一)、初识

格式 🌈:数组元素类型 数组名[数组元素个数];
example1:🎈

  • 需求 🍉:定义一个包含4整数的数组a
  • 代码 🍉:int a[4];
  • 收获 🍉:
    • 1、数组的下标从0开始,所以通过a[0]a[1]a[2]a[3]来访问数组中的每个整数;
    • 2、赋值和计算
      a[0]=10; // 将10赋值给数组的第一个元素
      a[1]=20; // 将20赋值给数组的第二个元素
      int sum = a[0]+a[1]; // 计算数组中前两个元素的和

example2:🎈

  • 需求 🍉:定义一个含2、4、6、8、10这五位数的数组arr
  • 代码 🍉:int arr[5]={2,4,6,8,10};
  • 注意 🍉:
    • 1、各数组元素需用大括号包裹;
    • 2、各数组元素之间用逗号隔开。

(二)、举例

在这里插入图片描述

需求 🎀:对10个数组元素依次赋值为0、1、2、3、4、5、6、7、8、9,并按倒序输出。

/**
 * 需求:对10个数组元素依次赋值为0、1、2、3、4、5、6、7、8、9,并按倒序输出。
 */

#include <stdio.h>
int main()
{
    /** 定义一个一维数组arr */
    int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    /** for语句 */
    for (int i = 9; i >= 0; i--)
        printf("%d	", arr[i]); // for语句里只有一行代码时,其大括号可以省略
    printf("
");               // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

二、定义二维数组 ⭐️

(一)、初识

格式 🌈:数组元素类型 数组名[数组行数][数组列数];
写法 ✍🏻:比如定义一个含 2行3列 整数的数组a

  • 写法一【更推荐】、int a[2][3]={{1,2,3},{4,5,6}};
  • 写法二、
    • int a[2][3];
      a[0][0]=1;
      a[0][1]=2;
      a[0][2]=3;
      a[1][0]=4;
      a[1][1]=5;
      a[1][2]=6;
  • 写法三、int a[2][3]={1,2,3,4,5,6};
  • 结果:👇🏻
    • 1 2 3
      4 5 6

(二)、举例

在这里插入图片描述

example1 🎈

在这里插入图片描述

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先定义 */
    int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 定义一个2行3列的二维数组a
    int b[3][2], i, j;                    // 定义一个3行2列的二维数组b
    /** for语句 */
    for (i = 0; i < 2; i++)     // 因为数组a的行数是2,所以第一层循环2次
        for (j = 0; j < 3; j++) // 因为数组a的列数是3,所以第二层循环3次
            b[j][i] = a[i][j];  // 将a[i][j]的值赋值给b[j][i]
    /** 输出结果 */
    printf("数组b为:
");
    for (j = 0; j < 3; j++) // 因为数组b的行数是3,所以第一层循环3次
    {
        for (i = 0; i < 2; i++)      // 因为数组b的列数是2,所以第二层循环2次
            printf("%d	", b[j][i]); // for语句里只有一行代码时,其大括号可以省略
        printf("
");                // 每一行内容后加个换行符(
)
    }
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

example2 🎈

在这里插入图片描述

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先定义 */
    int a[3][3] = {{1, 2, 3}, {9,8,7}, {-10,10,-5}}; // 定义一个3行3列的二维数组a
    int i,j,max;
    /** 赋值 */
    max = a[0][0]; // 将数组a的第一个元素赋值给max的初始值
    /** for语句 */
    for (i = 0; i < 3; i++)     // 因为数组a的行数是3,所以第一层循环3次
        for (j = 0; j < 3; j++) // 因为数组a的列数是3,所以第二层循环3次
           if(a[i][j]>max)
           max=a[i][j];
    /** 输出结果 */
    printf("最大元素的值为:%d
",max); // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

三、定义字符数组 ⭐️

1、定义格式同前面,只是里面的数组元素是字符
2、比如:【注意:字符用单引号

  • 一维字符数组char c[3] = ['H',' ','i']; // H i
  • 二维字符数组char c[3][3]={{'A',' ','B'},{'C',' ','D'},{'E',' ','F'}};
    • A B
      C D
      E F

四、输出字符数组 ⭐️

方法一、挨个输出【不推荐】🙅🏻‍♀️

格式 🌈:printf("%c",字符);
缺点 💥:比较墨迹,需要搭配一个或多个for语句,所以不推荐。

example:🎈

需求:定义一个字符串"spare no pains",然后输出这个字符串。

/**
 * 需求:定义一个字符串"spare no pains",然后输出这个字符串。
 */

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先定义 */
    char c[14] = {'s', 'p', 'a', 'r', 'e', ' ', 'n', 'o', ' ', 'p', 'a', 'i', 'n', 's'};
    int i;
    /** for语句 */
    for (i = 0; i < 14; i++)
        printf("%c", c[i]);
    printf("
"); // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

方法二、整体输出【推荐】

格式 🌈:printf("%s",数组名);puts(数组名);

example:🎈

需求:定义一个字符串"spare no pains",然后输出这个字符串。

/**
 * 定义一个字符串"spare no pains",然后输出这个字符串。
 */

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先定义 */
    char c[14] = {'s', 'p', 'a', 'r', 'e', ' ', 'n', 'o', ' ', 'p', 'a', 'i', 'n', 's'};
    
    /** 方法二、整体输出 */
    printf("%s
",c);
    // 或者
    puts(c);

    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

补充 👁

1、printf里,%c是输出字符串里的某一个字符s%是输出整个字符串
2、无论方法一还是方法二,遇到字符'',该字符及其后面的内容都不会被输出来,比如:👇🏻
在这里插入图片描述
3、好习惯:定义字符数组时,最好在原字符上多加一位字符'',目的是避免大项目中重复定义数组后未发现(虽然代码里若定义了同数组名,会有错误提示)。

五、输入字符数组 ⭐️

方法一、挨个单词输入【不推荐】🙅🏻‍♀️

格式 🌈:scanf("%s%s...",数组名1,数组名2,...);
知识点 📚:scanf里,当输入的是字符串时,其前不用加&符号。

方法二、整句输入【推荐】

格式 🌈:gets(数组名);

example:🎈

需求:输入一行由空格和单词组成的字符(字符数在80以内),请统计有多少单词。

/**
 * 需求:输入一行由空格和单词组成的字符(字符数在80以内),请统计有多少单词。
 */

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先定义 */
    char c[81]; // 定义一个长度为81的字符型数组(因为最后最好加一个'')
    int i, num = 1;
    /** 引导用户输入 */
    printf("请输入一行由空格和单词组成的字符(字符数在80以内):
");
    gets(c); // 数组c通过用户输入得到
    /** 逻辑处理 */
    if (c[0] == ' ')
        num = 0; // 第一位为空格,单词数为0
    for (i = 0; c[i] != ''; i++)
        if (c[i] == ' ' && c[i + 1] != ' ' && c[i + 1] != '')
            num++; // 单词数加1
    /** 输出结果 */
    printf("有%d个单词
", num);
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述
在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。