2017华为校招C++上机题:字母转换与数字重复检测
2星 需积分: 31 109 浏览量
更新于2024-07-20
收藏 2.44MB PDF 举报
"这篇资料是关于2017年华为公司校园招聘的上机测试题,主要涉及C和C++编程语言。题目包括对字符串处理和整数分析两个方面,旨在考察应聘者的编程基础和逻辑思维能力。"
在第一道题目中,要求编写一个名为`stringchang`的函数,该函数接受一个输入字符串`input`,并将其内部的字母替换为其后的字母,同时保持非字母字符不变。对于字母`z`和`Z`,它们分别应被替换为`a`和`A`。实现这个功能时,可以遍历输入字符串,利用`isalpha()`函数检查每个字符是否为字母。如果是,就进行相应的字母转换;如果不是,直接保留原样。最后,别忘了在输出字符串末尾添加终止符`\0`。
```cpp
void stringchang(const char* input, char* output) {
int m = strlen(input), n = 0;
for (int i = 0; i < m; i++) {
if (isalpha(input[i])) {
if (input[i] == 'z')
output[n++] = 'a';
else if (input[i] == 'Z')
output[n++] = 'A';
else
output[n++] = input[i] + 1;
}
else
output[n++] = input[i];
}
output[n] = '\0';
}
```
第二道题目要求编写`same`函数,用于检测一个整数`num`中是否存在重复的连续数字序列(至少两位)。实现方法是首先将整数转化为字符数组,然后逐个比较数组中的相邻数字,查找是否有相同的序列。如果找到,则返回1,表示存在重复部分;否则,返回0。
```cpp
intsame(int num) {
int n[10], n1 = 0, c = 0, i1, j1;
while (num > 0) {
n[n1++] = num % 10;
num /= 10;
}
for (i1 = 0; i1 < n1 - 1; i1++) {
for (j1 = i1 + 1; j1 < n1; j1++) {
if (n[i1] == n[j1]) { // 如果找到相同的数字
// 检查是否为连续的序列
int seqCount = 2;
while (j1 + seqCount < n1 && n[i1] == n[j1 + seqCount]) {
seqCount++;
}
if (seqCount >= 2) { // 至少两位的连续重复
return 1;
}
}
}
}
return 0;
}
```
这两道题目考察了C/C++程序员的基本技能,包括字符串操作、字符判断、循环控制以及数组处理等,这些都是编程面试中常见的考点。解决这些问题有助于提升对基本数据结构和算法的理解,以及在实际编程环境中的应用能力。
165 浏览量
点击了解资源详情
点击了解资源详情
2011-09-19 上传
2012-09-02 上传
2015-09-15 上传
120 浏览量
174 浏览量
Felix-lxd
- 粉丝: 28
- 资源: 8
最新资源
- matlab 在环境工程中的应用
- 编程思想E:\编程\C++\参考文档
- Programming Erlang
- GNUMakeManual
- ubuntu安装笔记——part3
- ubuntu安装笔记——part2
- ubuntu安装笔记——part1
- ARM7+基础实验教程.pdf
- EXT 中文手册.doc
- ASP.NET初级入门经典
- C#中调用Windows API时的数据类型对应关系.pdf
- 基于Web的系统测试方法
- pb日历控件源代码.............................................
- ARCGIS/ArcInfo教程基本,地图的配准和屏幕跟踪矢量化
- oracle install guide
- bash programming