当前位置: 首页 > news >正文

机考question2、question3

question2

C++转大小写函数:

tolower(char c1);

toupper(char c2);

question3

去重/排序:

题目:

对于明明生成的 nn 个 11 到 500500 之间的随机整数,你需要帮助他完成以下任务:
∙ ∙删去重复的数字,即相同的数字只保留一个,把其余相同的数去掉;
∙ ∙然后再把这些数从小到大排序,按照排好的顺序输出。
你只需要输出最终的排序结果。

输入描述:

第一行输入一个整数 n (1≦n≦1000)n (1≦n≦1000),代表明明生成的数字个数。
此后 nn 行,第 ii 行输入一个整数 ai (1≦ai≦500)ai​ (1≦ai​≦500),代表明明生成的随机整数。

输出描述:

输出若干行,每行输出一个整数,代表输入数据排序后的结果。第一行输出最小的数字。

//方法一:vector容器 #include <iostream> #include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; vector<int> array(n); for(int i=0;i<n;i++){ cin>>array[i]; } sort(array.begin(),array.end()); cout<<array[0]<<endl; for (int i=0;i<=n-2;i++){ if(array[i+1]!=array[i]){ cout<<array[i+1]<<endl; } } return 0; } //方法二:set容器 #include <iostream> #include <bits/stdc++.h> using namespace std; int main() { //set容器自动去重+排序 set<int> a; int n; cin>>n; for(int i=0;i<n;i++){ int b; cin>>b; a.insert(b); } for(int num : a){ cout<<num<<endl; } return 0; } //方法三:flag容器 #include <iostream> #include <bits/stdc++.h> using namespace std; int main() { //flag标记,筛去重复,flag下标存储数字 int n; cin>>n; bool flag[501]={false}; for(int i=0;i<n;i++){ int a; cin>>a; flag[a]=true; } for(int i=0;i<501;i++){ if(flag[i]){ cout<<i<<endl; } } return 0; }
set的用法
#include <set> // 必须加头文件 using namespace std; int main(){ set<int> s; // 定义一个存 int 类型的 set s.insert(x); // 把数字 x 放进 set for (auto num : s) {} // 遍历 set s.size(); //查看大小 s.clear(); //清空 //set的特性:自动去重(重复的数字只存一份),自动排序(默认从小到大排序) }

question4:字符串的基础处理

题目:

描述

对于给定的由小写字母和数字混合构成的字符串 ss,你需要按每 88 个字符换一行的方式书写它,具体地:
∙ ∙书写前 88 个字符,换行;
∙ ∙书写接下来的 88 个字符,换行;
∙ ∙……
∙ ∙重复上述过程,直到字符串被完全书写。
特别地,如果最后一行不满 88 个字符,则需要在字符串末尾补充 00,直到长度为 88。

输入描述:

在一行上输入一个长度 1≦length(s)≦1001≦length(s)≦100,由小写字母和数字构成的字符串 ss。

输出描述:

输出若干行,每行输出 88 个字符,代表按题意书写的结果。

示例1

输入:

hellonowcoder

复制输出:

hellonow coder000

复制说明:

在这个样例中,字符串长度为 1313,因此需要在第二行末尾补充 33 个 00。
//方法一:先补全需要的0,再输出 #include <iostream> using namespace std; int main() { //补全后循环输出 string s; cin>>s; int pad=(8-s.size()%8)%8; s.append(pad,'0'); for(int i=0;i<s.size();i+=8){ cout<<s.substr(i,8)<<endl; } return 0; }

字符串的边界处理:

s.append(pad, '0'); //在末尾插入pad个0 s.substr(i, 8); //从第i个字符开始,输出8个字符

question5:进制转换

isdigit()函数使用

char c = 'B'; if (isdigit(c)) { // 数字:c - '0' 转成真正的数字 } else { // 字母:A-F 转 10-15 }

进制转换公式

// 数字字符 → 数字 int num = c - '0'; // 字母字符 → 10~15 int num = c - 'A' + 10;
//十六进制——>十进制 string s = "0xFA93"; int num = stoi(s, nullptr, 16);// 转成 10 //二进制——>十进制 string s = "1010"; int num = stoi(s, nullptr, 2); // 转成 10 //八进制——>十进制 string s = "12"; int num = stoi(s, nullptr, 8); // 转成 10

stoi()函数的使用

stoi(字符串, 位置指针, 原进制)——把一个字符串形式的数字,转成十进制 int 整数

sto+ 类型首字母 / 缩写 → 字符串转对应数值类型。

#include <string> stoi(s, nullptr, 16); // 把16进制字符串s → 转成10进制int

题目:

描述

对于给定的十六进制数,输出其对应的十进制表示。

在本题中,十六进制数的格式为:0x0x 开头,后跟若干个十六进制数字(保证为 0-90-9 和 A-FA-F 中的一个)。其中,A-FA-F 依次代表十进制中的 10∼1510∼15。

输入描述:

在一行上输入一个十六进制数 ss,代表待转换的十六进制数,格式见题干。保证 ss 转化得到的十进制数 xx 的范围为 1≦x<2311≦x<231。

输出描述:

在一行上输出一个整数,代表 ss 对应的十进制数。

示例1

输入:

0xFA93

复制输出:

64147

复制说明:

回忆十六进制转化为十进制的方法:从右往左,将第 ii 位乘以 16i16i,然后求和。 在这个样例中,0xFA930xFA93 的第 00 位是 33,第 11 位是 99,第 22 位是 AA,第 33 位是 FF,因此 0xFA93=3×160+9×161+10×162+15×163=641470xFA93=3×160+9×161+10×162+15×163=64147。
//方案一:位权累积法(val,power,res) #include <iostream> #include <bits/stdc++.h> using namespace std; int main() { string s; cin>>s; string ss=s.substr(2); //位权累积法 long long res=0; long long power=1; for(int i=ss.size()-1;i>=0;i--){ char c; c=ss[i]; long long val; if(isdigit(c)){ val=c-'0'; } else{ val=toupper(c)-'A'+10; } res+=val*power; power*=16; } cout<<res<<endl; return 0; } //方法二:乘积致使移位 #include <iostream> #include <bits/stdc++.h> using namespace std; int main() { string s; cin>>s; //从左往右累乘,左移 string ss=s.substr(2); long long res=0; for(int i=0;i<ss.size();i++){//正序遍历 char c; c=ss[i]; long long val; if(isdigit(c)){ val=c-'0'; } else{ val=toupper(c)-'A'+10; } res=res*16+val; //位移 //可以写成位移符的形式 //res=(res<<4)+val; } cout<<res<<endl; return 0; } //方法三:库函数调用 #include <iostream> #include <bits/stdc++.h> using namespace std; int main() { //函数库糖 string s; cin>>s; long long res=0; res=stoi(s,nullptr,16); cout<<res<<endl; return 0; }
http://www.jsqmd.com/news/785731/

相关文章:

  • 从草图到3D:基于NeRF与生成式AI的智能设计工作流解析
  • 呼和浩特搬家机构最新推荐:专业搬家服务企业实力对比与选择指南 - 品牌策略师
  • 《深入浅出通信原理》连载081-085
  • CANN/ops-cv双线性插值调整算子
  • 不知道如何降AI率?2026年保姆级降AI提示词总结,教你分分钟去除aigc痕迹!
  • 为AI编程助手构建持久记忆层:amem架构解析与实战指南
  • 如何快速获取百度网盘提取码:终极智能解析工具完整指南
  • 如何3秒获取百度网盘提取码:开源智能工具实战指南
  • 2026全年度最新口碑见证!新疆旅行社哪家好靠谱?推荐新疆正规/纯玩无购物/小包团/跟团定制旅游地接社中旅!附新疆本地旅行社top2标杆排名对比!建议收藏! - 奋斗者888
  • CANN/ops-rand项目目录结构
  • 深度解析碧蓝航线智能自动化方案:解放双手的终极指南
  • CANN/metadef字符串转换函数
  • CANN/driver:昇腾芯片物理ID转换
  • 超 5 成银行已用!2026 银行大模型 + 19 个智能体案例复盘
  • 终极ncmdump指南:3步解密网易云音乐ncm格式,让音乐自由播放
  • AI赋能DAB变换器:XGBoost与PSO实现混合调制参数全局寻优
  • 国内AI图像生成实战:基于Cloudflare Gateway与OpenRouter的Gemini模型调用方案
  • AI时代家庭教育新路径:脑能构建替代补课刷题的核心逻辑
  • 生成式AI开发必读:数据侵权、隐私合规与全球监管实战指南
  • 医疗AI可解释性实战:SHAP、Grad-CAM与LIME在乳腺癌诊断中的应用
  • Kubernetes StatefulSet深度解析与实践
  • 全球南方AI崛起:开源微调与数据主权如何重塑AI治理格局
  • 卷积改进与轻量化:重参数化再升级:RepConv 引入多尺度分支,训练期提取多感受野特征,推理单路无损
  • 干货|Active-Active/Active-Passive 数据库架构解析:高可用设计中的权衡与选型
  • OmniBox:构建私有AI知识中枢的RAG架构与部署实践
  • Go语言实现轻量级代理转发工具:原理、部署与生产实践
  • 构建自我进化AI智能体:Hermes Agent架构解析与实战部署指南
  • 毕业设计 基于深度学习的抽烟行为检测算法实现(源码分享)
  • 为AI编码助手注入OpenClaw官方文档技能,实现精准配置与部署
  • 企业级消息集成平台实战:基于Evolution API构建WhatsApp自动化解决方案