-seventy-
Welcome to my blog space.

数组

/*
    1.数组长度:整数,常量表达式,自动获取长度
    ---但是不可以用小数
    ---也不可以是变量,数组在定义时系统会根据数组类型和大小为其分配内存空间
    ---对于这种情况的初始化操作,可以省略不写数组长度,它会自动识别:int c[] = {30, 31, 32, 33};

    2.数组内存是连续的
*/

int main()
{
    int a[5] = {1,2,3};    // 数组的初始化,左边代码只初始化了3个,剩下的2个使用默认值0
    int b[4];    // 由“数组名[下标]”组成,下标从零开始
    b[0] = 10;
    b[1] = 20;
    b[2] = 30;
    b[3] = 40;

    int num[100];

    // 遍历赋值
    for (int i = 0; i < 100; i++)
    {
        num[i] = i;
    }

    // 遍历读取
    for (int i = 0; i < 100; i++)
    {    
        if (i % 10 == 0)    // 每10个数就换一次行
            printf("\n");

        printf("%-3d", num[i]);    // 左对齐,共3位,“数据的位”不足就用空格补位
    }

    return 0;
}

/*
    二维数组的定义形式:
        类型  数组名[行数][列数];
        char a[5][3];


    二维数组的初始化
        按行初始化
            int arr[2][3] = {
                {0, 1},        // 初始化过程中,遇到没有值的,就默认为0(下面同理)
                {10, 11, 12}
            };
        顺序初始化
            int arr[2][3] = {0, 1, 2, 10, 11, 12};

        int arr[][3] = {        // 行可以省略,列不能省略!!
            {0, 1},
            {10, 11, 12}
        };

        ____________________________________________________________________________
        假如你省略行数,但是确定了列数,
        计算机会根据你的列数的数值以及你初始化时给的数据,自动确定行数,
        因此行数可以省略。
        但是如果给了行数但没有确定列数,
        对于你初始化的数据,计算机不知道怎么划分,是平均分呢?还是其他方式分呢?
        这是没有规定的,这样子会出现错误。
        ____________________________________________________________________________
        1、可以同时指定第一维和第二维的长度
        2、可以只指定第二维的长度
        3、不可以只指定第一维的长度
        4、不可以第一维和第二维的长度都不指定
        综上所述,至少指定第二维的长度
        ____________________________________________________________________________

*/

/*
    字符数组

    1.功能类别即可,例如:
        char a[4] = { 'g', 'o', 'o', 'd' };
        char b[] = { 'h', 'e', 'l', 'l', 'o' };

    2.由于C语言没有专门的字符串类型,所以我们把字符数组当成字符串类型去使用:
        char str[30] = { "Hello World" };
        char str[30] = "Hello World";    // 这种形式更加简洁,实际开发中常用

    3.字符串结束标志:'\0'
        例如:"hello" ==> 'h', 'e', 'l', 'l', 'o', '\0'    (5字节 + 1字节 = 6字节)

        ---非自动补上“结束标志”:
            char a[4] = { 'g', 'o', 'o', 'd' };
            printf("%s", a)        // 结果是:good???...  因为没有结束符,所以一直输出直到遇到"\0"

        ---自动补上“结束标志”:
            char str[30] = "Hello World";    // 它会自动补上一个结束标志"\0"
            printf("%s", str)    // 结果是:Hello World
*/

函数

/*
    函数的形式:

        返回值类型 函数名(变量1,变量2,...,变量n)    // 形式参数
        {
            函数体;
        }
*/

# include <stdio.h>

// 声明函数---由于代码是从上往下执行的,而 add 函数的定义位于代码最底部,不写声明的话,执行“使用函数”的时候,将不认识 add 函数
int add(int x, int y);

int main()
{
    int a, b;
    printf("Please inter first number>>>");
    scanf("%d",&a);
    printf("Please inter second number>>>");
    scanf("%d",&b);

    // 使用函数
    printf("%d\n", add(a, b));    // 实参(实际参数)拷贝给形参(形式参数)
    return 0;
}

// 定义函数
int add(int x, int y)
{
    return x + y;
}

函数的递归

// 求n的阶乘
#include <stdio.h>

// 声明函数
int test(int x);

int main()
{
    int n;
    printf("Please inter a number>>>");
    scanf("%d",&n);
    printf("%d\n", test(n));
    return 0;
}

int test(int x)
{
    if (x == 0||x == 1)
    {
        return 1;
    };
    return x * test(x-1);
}

字符串处理函数

/*
    对于输入和输出的字符串函数,如 printf、puts、scanf、gets使用时要包含头文件 stdio.h
    而对于其它字符串函数,使用时要包含头文件 string.h
    它是一个专门用来处理字符串的头文件,里面包含了很多字符串处理函数


    常用的字符串函数:
        1.strcpy(字符串复制)
        2.strcat(字符串连接)
        3.strcmp(字符串比较)
        4.strlen(获取字符串长度)
        5.strupr & strlwr(字符串大小写转换)

        详细介绍:
            char a[10] = "happy";
            char b[10] = "good";

            1.strcpy(字符串复制)
                strcpy(a, b);    // 结果        a数组的内容:good    b数组的内容:good

            2.strcat(字符串连接)
                strcat(a, b);    // 结果        a数组的内容:happygood        b数组的内容:good

            3.strcmp(字符串比较)
                strcmp(a, b)    // 按照 ASCII码 顺序比较两个字符数组中的字符串,该函数的返回值无法确定,但是可以与零进行比较

                ---该函数返回值如下:
                        如果返回值大于 0,则表示 a 大于 b。
                        如果返回值小于 0,则表示 a 小于 b。
                        如果返回值等于 0,则表示 a 等于 b。
                    e.g.
                        if (strcmp(a, b) > 0)    // a 大于 b
                        if (strcmp(a, b) < 0)    // a 小于 b
                        if (strcmp(a, b) = 0)    // a 等于 b

            4.strlen(获取字符串长度)
                strlen( a )        // 计算字符串的实际长度(不含字符串结束标志“\0”),"函数返回值"为字符串的实际长度

            5.strupr(字符串大小写转换)

                    char str[18] = {"HELLO world"};

                1.strupr(字符串数组名) 功能:将字符串中(小写 --> 大写)
                    strupr(str);    // printf(str) =》"HELLO WORLD"


                2.strlwr(字符串数组名) 功能:将字符串中(大写 --> 小写)
                    strlwr(str);    // printf(str) =》"hello world"
*/

 

posted on 2023-07-12 08:35  -seventy-  阅读(26)  评论(0)    收藏  举报