2008程序员面试题解:排序与字符串转复数技巧

需积分: 3 1 下载量 163 浏览量 更新于2024-12-02 收藏 119KB DOC 举报
【08年程序员下午试题】是一套包含两道编程相关的题目,旨在测试候选人的算法设计、数据结构理解和C语言编程能力。这些题目有助于评估应聘者的逻辑思维和编程实践。 试题一考察的是排序算法的应用。题目描述了一个合并两个已排序数组的问题,要求将数组A和数组B中的元素合并到数组C中,并保持从小到大的排序。考生需要根据提供的流程图理解其工作原理,该流程图可能涉及一种经典的合并排序方法,如归并排序的简化版,通过两个指针分别遍历两个数组,每次比较并选择较小的元素放入结果数组,直到遍历完其中一个数组,然后将剩余的另一个数组的元素直接添加到结果数组。最终,数组C会反映出所有元素的合并,重复的元素也会被保留。 试题二则关注字符串处理,特别是将单数名词转换为其复数形式。程序定义了一个名为`plural`的函数,它接受一个单词作为输入,根据不同的规则来确定复数形式。首先检查单词以'y'结尾,如果是,则替换为'i', 'e', 's';如果以's', 'ch', 'sh'结尾,添加'es';其余情况下直接加's'。考生需要填写缺失的部分: 1. 检查单词是否以'y'结尾,这通常使用条件语句实现,即`if (word[n-1] == 'y') { ... }` 2. 将`pstr[n-1]`更新为'i',这里应该是`pstr[n-2] = 'y';`,因为之前判断了'y'。 3. 如果不是'y'结尾,检查是否以's'或'h'结尾,这需要一个额外的条件判断,可能是`pstr[n-2] != 'y' && (pstr[n-1] == 's' || pstr[n-1] == 'h')`。 4. 当执行完上述条件判断后,需要设置结束符,这里是字符串复制操作的终点,所以`pstr[n+1]='\0';`应该在`else if`块的最后。 这两个题目不仅要求考生具备扎实的编程基础,还需要灵活运用所学数据结构和字符串操作技巧,以及对算法的理解和应用。通过解答这些题目,应聘者可以展示自己的编程实战能力和问题解决能力。