C++程序题

编程入门 行业动态 更新时间:2024-10-13 10:22:58

C++<a href=https://www.elefans.com/category/jswz/34/1771429.html style=程序题"/>

C++程序题

拆分输出字符串

题目描述

连续输入字符串(输入字符串个数为N,每个字符串长度不大于100,输入字符串间按照空格键分隔),请按长度为8拆分每个字符串后输出到新的字符串数组,输出的字符串按照升序排列。
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述
输入内容:2 abc 123456789
输入说明:
1.输入两个字符串(以空客分隔),其中一个为abc,另一个为123456789
输出描述
输出内容:12345678 90000000 abc00000
输出说明:
1.abc字符串需要在后边补零,123456789拆分为12345678与90000000,所有的字符串需要升序排列后输出(以空格分隔)
2.输出字符串中的重复字符串不能删除

参考代码

#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;int main()
{int N;cin >> N;vector<string> instr;string tmp_instr;for (int i = 0; i < N; i++){cin >> tmp_instr;instr.push_back(tmp_instr);}int len, need;multiset<string> outstr;string tmp_outstr;for (int i = 0; i < N; i++){len = instr[i].length();for (int j = 0; j < len; j++){if ((j + 1) % 8 == 0){tmp_outstr += instr[i][j];outstr.insert(tmp_outstr);tmp_outstr = "";}elsetmp_outstr += instr[i][j];}if (len % 8 != 0){need = 8 - len % 8;for (int k = 0; k < need; k++){tmp_outstr += "0";}outstr.insert(tmp_outstr);tmp_outstr = "";}}for (multiset<string>::iterator it = outstr.begin(); it != outstr.end(); ++it){if (it == outstr.begin()){cout << *it;}else{cout << " " << *it;}}return 0;
}

题2

题目描述

输入—行字符,排除字符串中的英文字母和数字,将剩余的字符串倒序输出。
输入描述
输入一行由键盘上相关符号组成的字符串
输出描述
字符串
e.g:
输入:~AzC*039&
输出:&*~

参考代码

#include <iostream>
#include <vector>
using namespace std;int main()
{string str;cin >> str;vector<char> ret;for (int i = 0; i < str.length(); i++){if ((str[i] <= '9' && str[i] >= '0') || (str[i] <= 'z' && str[i] >= 'a') || (str[i] <= 'Z' && str[i] >= 'A')){continue;}else{ret.push_back(str[i]);}}for (int i = ret.size() - 1; i >= 0; i--){cout << ret[i];}return 0;
}

题3

题目描述

小华是社保单位的一位职员,最近小华接到了一项任务,需要统计有多少人来过社保单位,每个人来过几次。小华看着“出入记录薄”想,有没有什么好办法能让记录更加清晰呢?已知每个人都有唯一的社保号,且社保号固定为10位(前2位数字,第3-5位为大写字母,后五位为数字)。随机输入n个社保号,输出社保号根据大小排序后的结果(ASCII码小的字符在前),及每个社保号的出入次数。
输入描述
第1行: n个社保号的个数
第2行:第一个社保号

第n+1行:第n个社保号
输出描述
社保号排序后的结果及社保号出现的次数
一行一个社保号,及出现次数,社保号与次数之间用空格隔开
输出带回车换行
e.g:
输入:

5
39zwh89943
70tpt88092
26rau81365
39zwh89940
26rau81365

输出:

26rau81365 2
39zwh89940 1
39zwh89943 1
70tpt88092 1

参考代码

#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;int main()
{int n;cin >> n;multiset<string> ms;vector<string> vstr;vector<string> outstr;vector<int> outnum;string tmp;for (int i = 0; i < n; i++){cin >> tmp;ms.insert(tmp);}for (multiset<string>::iterator it = ms.begin(); it != ms.end(); ++it){vstr.push_back(*it);}int tmp_num = 0;outstr.push_back(vstr[0]);outnum.push_back(1);for (int i = 1; i < n; i++){if (vstr[i-1]==vstr[i]){outnum[tmp_num] = outnum[tmp_num] + 1;}else{tmp_num++;outstr.push_back(vstr[i]);outnum.push_back(1);}}for (int i = 0; i < outstr.size(); i++){cout << outstr[i] << " " << outnum[i] << endl;}return 0;
}

更多推荐

C++程序题

本文发布于:2024-02-07 06:43:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753895.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:程序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!