2012年最全的华为笔试题
根据给定文件的信息,我们可以总结出以下相关的IT知识点: ### 1. 使用指针计算字符串长度 #### 知识点概述 在C语言中,可以通过指针遍历字符串来计算其长度。这种方法不依赖于内置的`strlen()`函数,而是通过自定义循环逐个检查字符直到遇到空字符`\0`为止。 #### 代码解析 ```c #include<stdio.h> int main() { char str[20]; char *p; int length = 0; printf("Please input a string: "); gets(str); p = str; while (*p++) { length++; } printf("The length of string is %d\n", length); return 0; } ``` - **输入**: 用户被提示输入一个字符串。 - **处理**: - 定义了一个字符数组`str`用于存储输入的字符串。 - 定义了一个指向`str`的指针`p`。 - 通过`while`循环逐个检查字符,每次循环增加`length`值,并移动指针`p`。 - **输出**: 输出字符串的长度。 ### 2. 字符串中子字符串的替换 #### 知识点概述 本知识点涉及如何在C语言中实现字符串中子字符串的替换功能。这里提供了三种不同的实现方法。 #### 实现一 ```c #include<stdio.h> #include<string.h> void StrReplace(char* strSrc, char* strFind, char* strReplace) { int i = 0; int j; int n = strlen(strSrc); int k = strlen(strFind); for (i = 0; i < n; i++) { if (*(strSrc + i) == *strFind) { for (j = 0; j < k; j++) { if (*(strSrc + i + j) == *(strFind + j)) { *(strSrc + i + j) = *(strReplace + j); } else { break; } } } } } int main() { char s[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char s1[] = "RST"; char s2[] = "ggg"; StrReplace(s, s1, s2); printf("%s\n", s); return 0; } ``` - **逻辑**: 通过两层循环匹配并替换子字符串。 - **输入**: 原始字符串`s`,待查找的子字符串`s1`,替换字符串`s2`。 - **输出**: 替换后的字符串。 #### 实现二 ```c #include<stdio.h> #define MAX 100 void StrReplace(char* s, char* s1, char* s2) { char* p; for (; *s; s++) { for (p = s1; *p && *p != *s; p++); if (!*p) *s = *(p - s1 + s2); } } int main() { char s[MAX]; char s1[MAX], s2[MAX]; puts("Please input the string for s:"); scanf("%s", s); puts("Please input the string for s1:"); scanf("%s", s1); puts("Please input the string for s2:"); scanf("%s", s2); StrReplace(s, s1, s2); puts("The string of s after displace is:"); printf("%s\n", s); return 0; } ``` - **逻辑**: 通过单层循环结合内嵌循环实现替换。 - **输入**: 同上。 - **输出**: 同上。 #### 实现三 ```c #include<stdio.h> #include<stdlib.h> #include<string.h> #define M 100 void StrReplace(char* strSrc, char* strFind, char* strReplace) { while (*strSrc != '\0') { if (*strSrc == *strFind) { if (strncmp(strSrc, strFind, strlen(strFind)) == 0) { // 替换逻辑 } } strSrc++; } } int main() { char s[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char s1[] = "RST"; char s2[] = "gggg"; StrReplace(s, s1, s2); printf("%s\n", s); return 0; } ``` - **逻辑**: 使用`strncmp`函数进行子字符串比较。 - **输入**: 同上。 - **输出**: 同上。 以上三种实现方式各有特点,可以根据具体需求选择合适的方法。第一种实现较为直观但效率较低;第二种实现相对简洁但可能不如第一种易读;第三种实现利用了标准库函数`strncmp`,提高了代码的可读性和可维护性。
剩余9页未读,继续阅读
- yyxiaoping2014-04-04内容有点少,不太值,而且内容有点旧
- baoqing4812012-09-062012年最全的华为笔试题,是非常好的文档,非常适合应届生
- aoz6662012-09-18少少的几个C语言的题目,物低所值
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助