华为机考程序:字符串操作与字符计数

需积分: 0 0 下载量 56 浏览量 更新于2024-08-03 收藏 28KB DOCX 举报
本资源包含了三个关于C++编程的练习题目,分别涉及字符串操作、字符处理以及排序算法。让我们逐一解析这些知识点: 1. **HJ1 - 字符串最后一个单词的长度** 这段代码展示了如何在C++中获取输入字符串`s`中最末尾单词的长度。首先,程序通过`getline(cin, s)`从用户输入读取一行字符串。然后,通过`string::size()`函数获取字符串的长度,并将其存储在`int s_len`中。接下来,遍历字符串从后往前,用`int word_len = 0`记录单词的长度。遇到空格(`' '`或换行符)时,`else`分支中断循环并跳出,因为这标志着一个单词的结束。最后,`cout << word_len << endl;`输出单词的长度。 2. **HJ2 - 计算某字符在另一个字符串中的出现次数** 这个程序的功能是统计给定字符`a`在字符串`s1`中出现的次数,同时使用自定义函数`changechar(char &a)`进行大小写转换。首先,用户分别输入两个字符串`s1`和`s2`。`changechar`函数接受一个字符并根据ASCII值范围将其转换为小写(例如,`a -= 32`)。接着,遍历`s1`并对其中每个字符调用`changechar`函数,使其统一到小写。然后,比较`s1`中的字符与`s2`的第一个字符`s2[0]`,如果匹配,`count`递增。最后,输出计数结果。 3. **HJ3 - 明明的随机数 - 快速排序算法实现** 这部分代码实现了快速排序算法的简化版本,主要关注的是`partition`函数。快速排序是一种分治策略的排序算法,这里选择数组中的最后一个元素作为枢轴(pivot),通过`partition`函数将数组划分为两部分:左侧的元素都小于等于枢轴,右侧的元素都大于枢轴。`partition`函数通过两个指针`i`和`j`进行操作,当遇到小于等于枢轴的元素时,交换`arr[i]`和`arr[j]`,`i`向右移动。当`j`到达边界时,枢轴元素与`arr[i+1]`交换位置,完成一次划分。`quickSort`函数调用`partition`函数进行递归排序,直到整个数组有序。 通过这三个练习,学习者可以提升字符串操作、字符处理、函数设计和排序算法等C++编程基础能力。实际应用中,这类技能对于处理文本数据、数据处理和算法优化都有重要意义。