理解题意:1.先输入一句话。2.在这句话中找到最长的那个单词并输出显示。
这个题是我们老师上课的时候给我们留的作业。因为刚好学过了二维数组所以果断采用二维数组来解题。个人觉得,这个逻辑思路其实相较一维数组来解会更简单一些。
我的思路是:要找最长单词,就要获取每个单词的长度然后进行比较,直到找到最大的那一个。
详解:将每一个单词当做一个一维数组,而这个句子就成了一个二维数组。因此要找到最长的单词,其实只需要比较每个单词的长度就好了!题目的主体是分析字符串所以这里无疑是要用char类型来定义变量的。而正好对于字符串或者说是char类型的一维数组,我们可以使用string.h 中的strlen()函数来直接获取字符串的长度。因此单词长度的事情解决了,就剩下了找最大长度单词的任务了,我采用了打擂台赛的比较方式,定义了一个max 来存储最大长度,在遍历这句话的时候,每个单词的长度都需要和max进行比较,将比max大的值赋给max,使max一直都是当前最大值。另外此处要定义一个k来记录最长单词在这句话中的位置即当前最长单词在二维数组中的存储下标。
细节处理:当上面的逻辑清楚之后就可以开始敲代码了,但是,也不是一蹴而就的,其中也会遇到一些之前没有想到的细节问题。1.对于字符串,需要有结束标记。在一维数组中,会自动以'\0'为一字符串的结束标志。但是在二维数组中就没有了!因此,为了在遍历语句时有结束标志,我将英文中的逗号'.'作为输入语句的结束标志。2.因为是以二维数组的方式处理,所以,在输入数据的时候,用的是%s 字符串输入,而不是%c字符输入。所以每一个单词输完后就会单独占用二维数组的一行来进行