笔试题II
来源:互联网 发布:js toobject方法 编辑:程序博客网 时间:2024/06/16 23:24
中国电信
20道单选(40)+5道多选(20)+三道编程(40)
选择题考察:数据结构,操作系统,数据库,linux,拥塞控制等
编程题:
1)字符串排序
编写一个程序,将输入字符串中的字符按如下规则排序。
规则1:英文字母从A到Z排列,不区分大小写。
如,输入:Type 输出:epTy
规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入:BabA 输出:aABb
规则3:非英文字母的其它字符保持原来的位置。
如,输入:By?e 输出:Be?y
样例:
输入:
A Famous Saying: Much Ado About Nothing
输出:
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy
这道题考察稳定排序 冒泡,直接插入,归并。
思路:
a)提取字符串中的字母字符成为一个新的数组,用冒泡排序
b)顺序输出排序后的字符,如果该位置是非字母字符,则输出对应位置的非字母字符。
void mySortString() { string input; getline(cin, input); char* temp = new char[input.size() + 1]; int len = 0; for (int i = 0; i < input.size(); i++) if (isalpha(input[i])) temp[len++] = input[i]; for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - i - 1; j++) { if (toupper(temp[j]) > toupper(temp[j + 1])) swap(temp[j], temp[j + 1]); } } int j = 0; for (int i = 0; i < input.size(); i++) { if (isalpha(input[i])) cout << temp[j++]; else cout << input[i]; } cout << endl;}
2)
输入一个字符串,内有数字和非数字字符,例如:A123x456 17960?302tab5876
将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123存放在a[0],456存放在a[1]。。。。统计共有多少个整数,并输出这些数。
其实有个偷懒的方法,不用转换成数字,直接输出字符就好了。
这里还是转了数字的
void getNUmOfString() { string input; getline(cin, input); vector<int> ans; for (int i = 0; i < input.size(); i++) { if (input[i] >= '0'&&input[i] <= '9') { int num = input[i] - '0'; ++i; while (input[i] >= '0'&&input[i] <= '9') { num = num * 10 + input[i] - '0'; ++i; } ans.push_back(num); } } for (int i = 0; i < ans.size() - 1; i++) cout << ans[i] << " "; cout << ans[ans.size() - 1] << endl;}
3)数组排序
对一个数组按从小到大排序,并按数组中原来的顺序输出它排序后的次序,相同元素次序一样。
a)对原数组保存一份拷贝后再排序
b)用map保存排序后的次序。
c)遍历原数组的拷贝,对应元素在map中找到它的次序并输出。
void printOrder() { int n; cin >> n; int* data = new int[n]; int* temp = new int[n]; for (int i = 0; i < n; i++) { cin >> data[i]; temp[i] = data[i]; } sort(data, data + n); unordered_map<int, int> order; int j = 1; order[data[0]] = 1; for (int i = 1; i < n; i++) { if (data[i] != data[i - 1]) { ++j; order[data[i]] = j; } } for (int i = 0; i < n; i++) cout << order[temp[i]] << " "; cout << endl;}
- 笔试题II
- 每天一道C++笔试题 II
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 笔试题
- 动态规划
- .NET常用术语表
- shell编程总结
- 用C写的json解析工具(逐步完善中)
- ContextMenu和OptionsMenu主要区别
- 笔试题II
- 吴恩达DeepLearning.ai系列课后编程题实践总结week3
- PHP使用WebSocket
- 高质量C++编程(一)防止头文件重复引用
- #基础# 信息收集—域名信息查询
- Android里的小问题和小技巧
- php中常用的字符串截取函数mb_substr实例解释
- Hello World !
- UVA 423