华为上机题汇总(一)
来源:互联网 发布:网络餐饮监管存在问题 编辑:程序博客网 时间:2024/06/06 01:32
华为上机题汇总(一)
注:编译环境为Visual Studio 2012,答案仅供参考。
目录
- 华为上机题汇总一
- 目录
- 第一题
- 第二题
- 第三题
- 第四题
- 第五题
第一题
1.给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数
void Stringchang(const char *input,char *output)
其中input是输入字符串,output是输出字符串
#include <stdio.h>#include <iostream>using namespace std;void Stringchang(const char* input,char* output){ int length = strlen(input); while (*input != '\0') { if ((*input < 'z' && *input >= 'a') || (*input < 'Z' && *input >= 'A')) { *output++ = *input++ + 1; } else if (*input == 'z' || *input == 'Z') { *output++ = *input++ - 25; } else { *output++ = *input++; } } *output = '\0';}int _tmain(int argc, _TCHAR* argv[]){ char in[100]; char out[100]; cin.getline(in,100); Stringchang(in,out); cout << out << endl; return 0;}
第二题
2.求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。
函数为 int same(int num)
其中num是输入的整型数字
#include <stdio.h>#include <iostream>#include <vector>using namespace std;int same(int num){ vector<int> temp; while (num != 0) { int tempNum = num % 10; temp.push_back(tempNum); num = num / 10; } if (temp.size() <= 1) { return 0; } for (auto begin = temp.rbegin(), end = temp.rend(), ahead = begin + 1; begin != end; begin++) { while (ahead+1 != end) { if (*ahead != *begin) { ahead++; continue; } if (*(ahead+1) == *(begin+1)) { return 1; } ahead++; } } return 0;}int _tmain(int argc, _TCHAR* argv[]){ int num; cin >> num; cout << same(num) << endl; return 0;}
第三题
3.求两个字符串的乘积,结果存到字符串中,例如字符串一中存的“657891”,字符串二中存的“521”,分别将字符串中的字符转换成整型数字,进行计算后,再转换成字符类型存储起来
函数为 void mul(char *input1,int n,char *input2, int m,char *output)
其中input1和input2是输入,n是input1的长度,n2是input2的长度。Output是输出
注:题目中要求字符串中的字符转换为整型数字,说明不考虑无法转换即大数问题的情况。
#include <stdio.h>#include <iostream>using namespace std;void mul(char *input1,int n,char *input2,int m,char *output){ long long num1 = 0, num2 =0; for (int i = 0; i < n; i++) { num1 += (input1[i] - '0') * pow(10,n-i-1); } for (int i = 0; i < m; i++) { num2 += (input2[i] - '0') * pow(10,m-i-1); } long long num3 = num1 * num2; char *p = output; while (num3 != 0) { *p++ = num3 % 10 + '0'; num3 /= 10; } *p = '\0'; int length = strlen(output); for (int i = 0; i < length/2; i++) { int temp = output[i]; output[i] = output[length - i -1]; output[length - i -1] = temp; }}int _tmain(int argc, _TCHAR* argv[]){ char in1[10], in2[10], out[10]; cin >> in1 >> in2 ; mul(in1,strlen(in1),in2,strlen(in2),out); cout << out << endl; return 0;}
由于输入的字符串不一定都是数字,最好再增加一个全局变量用于表示输入是否合法
第四题
4.删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。
#include <stdio.h>#include <iostream>#include <string>using namespace std;int deleteSubstr(string &str,const string &sub){ int count = 0; string::size_type length = sub.size(); if (str.size() < length) { return count; } string tempString; auto begin = str.begin(); for (auto end = str.end();(end - begin) >= length;) { string tempSub(begin, begin + length); if (tempSub == sub) { count++; begin += length; continue; } tempString.push_back(*begin++); } while (begin != str.end()) { tempString.push_back(*begin++); } str.clear(); str.assign(tempString.begin(),tempString.end()); return count;}int _tmain(int argc, _TCHAR* argv[]){ string s1,s2; cin >> s1 >> s2; cout << deleteSubstr(s1,s2) << s1 << endl; return 0;}
第五题
5.约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
#include <stdio.h>#include <iostream>#include <vector>using namespace std;void cycle(int n, int k, int m){ if (k > n) { // error return; } vector<int> v; for (int i = 0; i < n; i++) { v.push_back(i+1); } while (v.size() > 1) { int popNum = (k-1+m-1)%v.size(); k = (popNum+1)%(v.size()-1); cout << v[popNum] << endl; v.erase(v.begin()+popNum); } cout << v[0] << endl; v.clear();}int _tmain(int argc, _TCHAR* argv[]){ int n,k,m; cin >> n >> k >> m; cycle(n,k,m); return 0;}
- 华为上机题汇总(一)
- 华为上机题汇总
- 华为上机题汇总(二)
- 华为上机题汇总(三)
- 华为上机题汇总(四)
- 华为上机题汇总(五)
- 华为上机题汇总(六)
- 华为上机题汇总(七)
- 华为上机题汇总(八)
- 华为上机题汇总(九)
- 华为上机题汇总(十)
- 华为上机题汇总(十一)
- 华为上机题汇总(十二)
- 华为上机题汇总(十三)
- 华为上机题汇总(十四)
- 华为上机题汇总(十五)
- 华为上机题汇总(十六)
- 华为上机题汇总(十七)
- 使用pbc
- 洛谷 P2330 05四川 繁忙的都市
- C语言 字符数组转换整数 stringToInt
- 《TCP/IP详解 卷1:协议》 读书笔记 第3章 IP:网际协议
- 平面方程推导
- 华为上机题汇总(一)
- Android 缓存
- Lua数据类型
- Hibernate对象的生命周期及三种状态
- 购物车的实现原理
- Android Launcher3 强制横屏
- UIView与CALayer的区别,很详细
- 【LeetCode-21】 Merge Two Sorted Lists(C++)
- Eclipse项目小红叉