关于这个练习14,因为是某个知识点的基础部分,所以较为简单,但也有一些经验值得总结一下:
C题(字符串查找统计)
题目描述:输入一行字符串,输出其中的小写字母,并统计其中小写字母的个数。
输入描述:一行字符串(包含空格),长度小于500。
输出描述:共两行,第1行为小写字母,第2行为小写字母个数。
本人在最初做这道题的时候,对如何输出其中的小写字母很是困惑。后来,想起了在数组中运用的方法,并将其运用到处理字符数组上,果然有效:str[k++]=str[i],意思就是将当前字符(str[i])复制到新字符串的位置k,在复制的同时,k的值增加1,以便下一个字符复制到正确的位置,个人认为这是一个删除大写字符并保留小写字符的一个很好的方法。但之后,当我输出这个字符串时,程序却运行错误:
这是为什么呢?
后来,在阅读教材《C/C++程序设计》后,才恍然大悟:新字符串需要在末尾添加结束符'\0',否则就会出现错误。
接下来就是I题(字符串判断):
题目描述:给出两个长度不超过 50 的仅包含小写字母的字符串,判断是否两个字符串是否存在相同的字符 如果有,则输出 yes,否则输出 no
输入描述: 输入包含两行,每行包含一个长度不超过 50 的小写字母组成的字符串
输出描述: 输出yes或no表示答案
这道题本身不难,但从这道题中得到了一个经验:
重点看这里:
这里在内循环判断两个字符串中有重复字符后,将状态变量flag变成1,break,此处的break仅仅只是跳出了内循环,并没有跳出外循环,所以需要在外循环再次判断状态变量flag是否等于1,如果成立则再次break,跳出外循环,这样才算真正地跳出了整个循环。另外if(fiag==1)也可写成if(flag),因为大于等于1的数被认为是真值,即判断条件成立,0被认为是假值,即判断条件不成立。