AI大模型教程
一起来学习

C语言:二维数组和字符串数组

二维数组基础

二维数组是处理表格类数据(如Excel表格)的利器,可以理解为”数组的数组”。

定义方式

“`c

数据类型 数组名[行数][列数];

“`

例如:

“`c

int a[3][4]; // 3行4列的整型数组

“`

初始化方法

1. **全部初始化**

“`c

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

// 或按行初始化更清晰

int a[3][4] = {

    {1,2,3,4},

    {5,6,7,8},

    {9,10,11,12}

};

“`

2. **部分初始化**

“`c

int a[3][4] = {1,2,3,4,5,6}; // 剩余自动补0

int a[3][4] = {

    {1,2},

    {5,6},

    {9,10}

};

“`

3. **初始化技巧**

“`c

int a[][4] = {1,2,3,4}; // 自动计算行数

int a[3][4] = {0}; // 全部初始化为0

“`

### 访问元素

“`c

a[行下标][列下标] // 从0开始计数

“`

二维数组的本质

二维数组实际上是”一维数组的一维数组”:

“`c

int[4] a[3]; // 包含3个int[4]类型的一维数组

“`

内存中是**按行连续存储**的,先存第一行,再存第二行…

二维数组练习

1. 输入并计算总和

“`c

#include

int main() {

    int a[3][4];

    int sum = 0;

    // 输入数据

    for(int i=0; i

        for(int j=0; j

            scanf(“%d”, &a[i][j]);

            sum += a[i][j];

        }

    }

    printf(“总和: %dn”, sum);

    return 0;

}

“`

 2. 找出最大值

“`c

#include

int main() {

    int a[3][4];

    int max = a[0][0]; // 假设第一个元素最大

    // 输入数据

    for(int i=0; i

        for(int j=0; j

            scanf(“%d”, &a[i][j]);

            if(a[i][j] > max) {

                max = a[i][j];

            }

        }

    }

    printf(“最大值: %dn”, max);

    return 0;

}

字符二维数组(字符串数组)

用于存储多个字符串,每个字符串占一行:

“`c

char 数组名[字符串数量][每个字符串最大长度];

“`

例如:

“`c

char s[5][10]; // 可存储5个最大9字符的字符串(留1位给”)

初始化

“`c

char s[5][10] = {

    “hello”,

    “world”,

    “china”,

    “english”,

    “america”

};

“`

内存布局:

“`

s[0]: h e l l o

s[1]: w o r l d

s[2]: c h i n a

s[3]: e n g l i s h

s[4]: a m e r i c a

“`

字符串数组练习

1. 找出最大字符串

“`c

#include

#include

int main() {

    char s[5][10];

    char max[10];

    // 输入5个字符串

    for(int i=0; i

        gets(s[i]);

    }

    

    strcpy(max, s[0]); // 假设第一个最大

    

    for(int i=1; i

        if(strcmp(s[i], max) > 0) {

            strcpy(max, s[i]);

        }

    }

    

    printf(“最大字符串: %sn”, max);

    return 0;

}

“`

2. 字符串逆序排列

“`c

#include

#include

int main() {

    char s[5][10];

    char temp[10];

    

    // 输入5个字符串

    for(int i=0; i

        gets(s[i]);

    }

    // 逆序排列

    for(int i=0; i

        strcpy(temp, s[i]);

        strcpy(s[i], s[4-i]);

        strcpy(s[4-i], temp);

    }

    

    // 输出结果

    for(int i=0; i

        puts(s[i]);

    }

    

    return 0;

}

“`

3. 字符串排序(按字母顺序)

“`c

#include

#include

int main() {

    char s[5][10];

    char temp[10];

    

    // 输入5个字符串

    for(int i=0; i

        gets(s[i]);

    }

    

    // 冒泡排序

    for(int i=0; i

        for(int j=0; j

            if(strcmp(s[j], s[j+1]) > 0) {

                strcpy(temp, s[j]);

                strcpy(s[j], s[j+1]);

                strcpy(s[j+1], temp);

            }

        }

    }

    

    // 输出排序结果

    for(int i=0; i

        puts(s[i]);

    }

    

    return 0;

}

“`

注意事项

1. 二维数组访问时要注意下标不要越界

2. 字符串操作要确保目标数组足够大,能容纳结果

3. 使用字符串函数前要包含“

4. 输入字符串时建议使用`fgets()`替代不安全的`gets()`

通过掌握这些知识,你已经能够处理大多数二维数据和字符串数组相关的问题了!多加练习,你会更加熟练。

文章来源于互联网:C语言:二维数组和字符串数组

相关推荐: 文心一言用户数突破2亿 百度官宣三大AI开发神器

在日益激烈的竞争中,百度正在中国AI市场努力保持领导者地位,文心一言用户规模突破2亿,较去年年底翻了一番。 4月16日周二,以“创造未来”为主题的Create 2024百度AI开发者大会在深圳国际会展中心举办。百度CEO李彦宏在会议上指出,文心一言目前拥有2亿…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » C语言:二维数组和字符串数组
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们