华为笔试编程题:字符串长度计算与子串替换方法

0 下载量 155 浏览量 更新于2024-08-03 收藏 49KB DOC 举报
在华为的最新编程笔试题目中,考察了两个关键的编程技能点: 1. **字符串长度计算**: - 问题要求设计一个程序,输入一个字符串,通过指针遍历的方式计算其长度。代码示例中使用了`char`数组`str[20]`作为输入,用户通过`gets`函数获取字符串。通过指针`p`逐个访问数组元素,每遇到非空字符(即`*p`不为空),`length`计数器加一。当遍历完整个字符串时,输出字符串的长度。 ```c int main() { // ... while (*p++) { // 当指针指向非空字符时,length递增 length++; } // ... } ``` 这部分考察了对C语言基本数据类型的理解、字符数组操作以及循环控制结构的应用。 2. **字符串替换功能**: - 第二个问题要求实现一个名为`StrReplace`的函数,该函数接收三个参数:原字符串`strSrc`,待替换的子字符串`strFind`,以及替换后的字符串`strReplace`。这里给出两个实现方法: - 方法一:采用逐字符对比的方式,找到子字符串在原字符串中的位置,然后逐个替换子字符串的每个字符。使用`strlen`函数获取子字符串长度,并用嵌套的`for`循环进行替换操作。代码中展示了如何在`main`函数中调用这个函数并应用到实际例子`"ABCDEFGHIJKLMNOPQRSTUVWXYZ"`中,将子串"RST"替换为"ggg"。 ```c void StrReplace(char* strSrc, char* strFind, char* strReplace) { // ... for (j = 0; j < k; j++) { if (*(strSrc + i + j) == *(strFind + j)) { *(strSrc + i + j) = *(strReplace + j); } } } ``` - 方法二:同样实现字符串替换,但简化了部分条件判断,仅在找到匹配字符时进行替换。与方法一相比,这种方法更注重代码简洁性,但逻辑处理方式类似。 这些题目着重考察了C语言基础,包括字符串操作、指针使用、循环控制以及函数定义与调用。掌握这些知识点对于理解底层编程逻辑和提高编程能力具有重要意义。