当前课程知识点:C语言程序设计 >  第7章 数组 >  7.7 字符串数组 >  字符串数组

返回《C语言程序设计》慕课在线视频课程列表

字符串数组在线视频

下一节:函数概述

返回《C语言程序设计》慕课在线视频列表

字符串数组课程教案、知识点、字幕

同学们

大家好

今天我们来学习C语言中的字符串数组

首先让我们来介绍一下字符串数组概念

在前面的章节当中

我们已经学习到

我们可以使用一个一维的字符数组

来表示一个字符串

那么

我们又怎么样来表示一个字符串的数组呢

原理很简单

我们可以使用二维的字符数组

来表示一个一维的字符串数组

由于二维数组的元素是一个一维数组

它刚好对应到一个字符串

因而可以用二维字符数组

来表示一个一维的字符串数组

类似的

如果需要表示更多维的字符串数组

我们可以通过再增加一个维度来实现

比如

使用三维的字符数组

来表示一个二维的字符串数组

下面我们来看一个例子

例7.9

有三个字符串

要求找出其中最大的字符串

通过这个例子

我们可以把有关字符数组的

相关概念作一个综合应用

首先我们应该考虑如何表达

三个字符串组成的数据结构

正如我们上面所学到的

我们可以使用一个二维的字符数组

来表示字符串一维数组

剩下的问题就是

我们如何依次输入这三个字符串

应该首先想到

使用gets函数来替代scanf函数

第二

我们应该考虑

两个字符串之间如何进行比较呢

这要用到我们前面所讲到的strcmp函数

第三

我们又如何保存当前字符串值

最大的那个字符串呢

这里不能使用直接的赋值运算

可以考虑使用前面学过的

strcpy函数来实现相应的功能

有了上述的算法思想以后

我们就可以来看看这段程序了

程序的开始

我们首先定义一个用来存放当前值

最大的字符串的一个字符数组

它应该是一个一维字符数组

然后定义用来存放

三个字符串的二维的字符数组

通过一个循环调用gets函数

来依次输入每一个字符串

这个地方要注意

我们在使用该函数时

函数参量

str中括弧i

只用到了一个下标

而str数组是一个二维数组

有同学就感到疑惑

这是否是语法错误呢

回答是

不是

因为str是一个二维的字符数组

当我们只提供了一个下标时

它就对应到一个一维的字符数组

刚好对应可以存放

一个字符串的一维字符数组

下面

我们通过一条if语句

判断str[0]和str[1]的大小关系

也就是第一个字符串和第二个字符串的大小

如果str[0]大于str[1]

则把str[0]保存到数组string当中

否则把str[1]保存到数组string当中

经过这个if的判断

我们把两个字符串中的较大者

保存到了数组string当中

下一步

我们再比较str[2]

第三个字符串

和string两个字符串的大小

如果str[2]大于string

我们就把str[2]赋值给string

显然

这个时候

string字符数组中保存的是

这三个字符串当中的最大值

需要注意的是

在进行两个字符串的比较过程当中

不能直接使用关系运算符

而应该使用我们前面所介绍的字符串

比较函数strcmp

类似的

在进行两个字符串的赋值操作时

也同样不能直接使用赋值运算符

而要使用我们前面所学过的strcpy函数

来实现相应的功能

注意上述程序的这种比较方法

显然是有问题的

如果是4个字符串

我们又该如何比较它们的大小

如果是5个

6个字符串甚至更多个字符串

我们又该如何编写这段程序呢

显然

这些字符串的比较过程

更适合用一个循环来实现

有关它的实现方法

同学们可以自己私下去思考或编写

有关字符串数组的内容

我们今天就讲到此为止

同时我们这一章整个数组的

主要内容我们也介绍完了

谢谢大家

再见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

字符串数组笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。