好 我们看屏幕上面
,那么今天这节课我们要讲的是我们第19道题目
,第19道真题
,那么我们首先看第1个题目
,我们的程序填空题
,那么点击程序填空以后
,选择启动VC
,然后可以打开我们这个微信软件
,那接下来我们稍微来看看题目
,题目的类型
,那么前面16道题主要是我们的链表和结构题
,从这地方开始
,我们重点是我们的字符串
,那下面我们看看这个字符串题目
,简单看一下
,它要求形参ss所指字符串数组中最长的长度
,将其余字符串右边补齐
,那么这右边补齐
,跟这左边补齐
,它的算法和原理基本上是一样的
,那么题型的话都是一样的
,我们点击考生文件夹
,然后找到我们的填空程序拖到我们的VC里面来
,那么这样我们的程序文件就打开了
,打开了以后
,这个题目要求我们填3个空
,每次考试时候都是3个空
,那么第1个空
,我们看这一个函数
,strlen函数
,那么从这个函数上面看得出来
,它是一个字符串的长度测试函数
,那么所以我们将从这一个程序里面
,这个函数里面来找表示字符串的这个变量
,大家想一想
,在我们当前这个子函数里面
,要来表示我们字符串的一个变量是谁
,那么从前面的地方可以看得出来
,这个是我们全部整型变量
,那么所以只有我们这个二维数组
,这个结束端接受我们ssMN
,所以它就是个二维数组
,那么所以应该在它的上面来想办法
,表示成我们这个字符串
,那么关于这个二维数组
,其实它就是一个表格
,二维数组就是这样的一个表格
,然后每一行它相当于一个字符串
,
那么这里是一个字符串
,这里是个字符串
,这里是字符串
,这里是字符串
,那么所以这个里面我们答案应该是比较明显的
,应该是把它当前这一行它的长度测试出来
,存储到我们的n变量里面来
,那么所以这个里面应该是ss中括号i
,那么这个i刚好跟我们上面这个地方是连在一起
,那么刚刚好可以使用
,那么这个题目我们就这样做出来了
,第一个我们的strlen这个函数
,它是我们字符串的长度测试函数
,那么它测试我们这个字符串的长度
,那么自然它所测试的对象应该是我们字符串
,在我们当前这个子函数里面
,我们只有一个字符串
,那么就是我们的星号ss中括号N
,那么这是一个字符串数组
,那么我们从自然数组里面读取一个字符串的方法
,那么刚刚我已经画过了这样的一个表格
,那么前面这个M它表示的是我们的行
,后面的N表示我们的列
,那么所以我们前面这个参数是行
,我们组的这个地方
,我们只写一个
,千万后面不要再写个中括号了
,如果你再写个中括号
,它表示的是某一个单元格
,而这地方我们测试的是整个这一行
,那这是我们第1个空
,我们填好了
,第2个空
,我们从后面的地方来看
,它复制了一个星号
,那么所以根据我们题目的要求来讲
,它应该是从右边
,看这个地方
,从右边开始补齐
,那么右边补齐的话
,我们看这个地方len的话减去n
,看它
,那么len根据我们前面的计算
,它应该是它的长度
,这一个总长度
,这个len是我们最长那一个
,这个题目我们上面讲过的
,看这个地方
,我们通过这里已经获得了当前字符串数组里面最长的那一个
,
例如假如12位
,这个12就藏在我们的len里面来
,那么然后我们拿这个12去减去n
,这个n是我们刚刚所计算出来的
,那么是当前这一行
,它有多少个
,当前这一行它有多少个
,那么所以这个地方我们应该是从零开始
,然后到它的总长度减去我们当前这儿的长度
,那么当这假设是5个
,那么是不是小于7
,12减去5等于7
,那么就是说我们将在右边来补7个星号
,那么在右边我们想想
,它说的是在右边
,那么右边的话
,如果我们直接用这个j来表示
,那么是不是不可以
,因为j它是第0位开始的
,那么我们j它是0
,那么0加上我们这个7
,大家想是不是可以啦
,因为你的前面有5个字符
,我们这里已经5个字符了
,后面的话少7个
,那咱们0加7还不行
,你看这不行
,应该是这个0加5
,对吧
,当前你有5个字符
,那么现在我要在后面来补7个
,那么是不是从第6个开始
,然后题目要求的是在右边补
,那么所以从这个地方开始补
,那么所以这个答案我们应该是我们这个
,n来加上我们这个j
,j等于1的时候5加1
,j等于2的时候5加2
,那么依此的话
,我后面进行递增
,递增的时候加一个星号
,然后最后一个我们看这个地方
,很容易从这地方看出来它是一个结束标志
,那么所以这里面我们应该是给最后那个字符串
,把星号加完了以后
,在最后格子里面再加一个结束标志
,
那么这当前我们这个地方可以看得出来
,它最后一个是n加j
,那么所以它的后一个应该是n加j加1
,在当前填完了以后
,在它的后一个我们给它加一个1表示了它的后一个
,然后给它附一个结束标志
,这样它才是个字符串
,否则它是一个字符数组
,那么这是我们当前这个答案
,第1个空
,我们通过这个字符数组来找我们表示字符串的对象
,第2个
,那么这个地方我们通过这个j的取值
,以及结合我们题目所讲的右边
,来得到我们应该从这个n加j开始
,最后一个我们通过这个结束标志得出来
,应该是给最后一个字符
,重置单元格存储一个结束标志
,那么所以我们在前面这个基础上面来加一个1就可以了
,这地方我们注意的是这个地方
,我们这个循环语句那这地方运行完毕
,循环语句它只管到我们这个小红色的圈里面
,后面的这一句是我们最后把这个循环语句运行完了以后
,它才运行的
,那么这是我们当前这一个题目的答案
,给大家讲到这个地方
,我们看第2个题
,我们的改错题
,那么改错题老规矩我们先编一次
,编以后我们得到了很多错误提示
,那么这是一个很好的事情
,那么这里第1个错误提示是
,它这里指的是我们这一个字符数组
,它这个字符指针
,字符指针的话
,它得到一个整型的常量
,那么这代表什么意思呢
,很容易看得出来
,这个P是个地址
,后面的话是个空格
,那么空格是不能够直接赋给我们的这个地址的
,应该赋值给一个变量
,那么所以我们这个提示语句它的意思是
,
它的左边应该是什么
,是个指针的地址
,而右边的话是一个常量
,那么我们知道我们的常量是不能够直接赋值给地址的
,那么就按照我们同学所讲的
,应该加一个星号上去
,那么这里我们答案出来了
,那么这里的话它是我们这个字符指针
,那么下面的地方肯定也跟它非常的接近
,是相同的错误
,我们在做之前我们可以再编一次
,我们改错题目是这样的
,每改完一个以后把它编一次
,记清楚这个地方
,那么这里的话我们来看
,它是把后面这个值
,看这里
,p减1
,我们p指针当前往后面跳一格
,跳一格了以后取它的值
,然后进行这么一个toupper这么一个函数
,那么这个函数在我们这个里面
,应该严格来讲的话在我们第一个里面
,那么它是将我们的小写变大写
,这个函数将小写变大写
,那么这里面是把我们后面这一个由小写变大写
,然后存到我们的前面一个里面去
,是不是这个意思
,我们这个p减1应该是我们当前的这一格 可能是
,然后p的话应该是这一格
,那么下面把这一格这个字母要变成大写以后
,存到这里面来
,这是我们这个大概的一个要求
,那么现在我们看看题目要求
,它是不是这么一个意思
,题目的要求的话
,我们来看一下它是
,字符串中每个单词最后一个字母改为大写
,那么它不是把后一个放在前一个去
,而是要把当前这个变成大写
,那么具体我们来看看题目的要求是
,每一个单词的第1个字母变为大写
,那这里面有一个每一个单词
,每一个单词
,我们如何来判断每一个单词呢
,
这地方我们有一个空格
,那么这个空格我们可以用来判断
,在我们这里面
,当前这个地方就是来判断一下它是不是空格
,如果它等于空格
,说明我们这一个单词结束了
,那么结束了以后
,有同学说为什么是p减1
,因为你当前位于这个空格上面了
,例如我们写一下
,我们写一个ab
,然后c空格cd
,