question2C转大小写函数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; cinn; vectorint array(n); for(int i0;in;i){ cinarray[i]; } sort(array.begin(),array.end()); coutarray[0]endl; for (int i0;in-2;i){ if(array[i1]!array[i]){ coutarray[i1]endl; } } return 0; } //方法二set容器 #include iostream #include bits/stdc.h using namespace std; int main() { //set容器自动去重排序 setint a; int n; cinn; for(int i0;in;i){ int b; cinb; a.insert(b); } for(int num : a){ coutnumendl; } return 0; } //方法三flag容器 #include iostream #include bits/stdc.h using namespace std; int main() { //flag标记筛去重复flag下标存储数字 int n; cinn; bool flag[501]{false}; for(int i0;in;i){ int a; cina; flag[a]true; } for(int i0;i501;i){ if(flag[i]){ coutiendl; } } return 0; }set的用法#include set // 必须加头文件 using namespace std; int main(){ setint 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; cins; int pad(8-s.size()%8)%8; s.append(pad,0); for(int i0;is.size();i8){ couts.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); // 转成 10stoi函数的使用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≦x2311≦x231。输出描述在一行上输出一个整数代表 ss 对应的十进制数。示例1输入0xFA93复制输出64147复制说明回忆十六进制转化为十进制的方法从右往左将第 ii 位乘以 16i16i然后求和。 在这个样例中0xFA930xFA93 的第 00 位是 33第 11 位是 99第 22 位是 AA第 33 位是 FF因此 0xFA933×1609×16110×16215×163641470xFA933×1609×16110×16215×16364147。//方案一位权累积法valpowerres #include iostream #include bits/stdc.h using namespace std; int main() { string s; cins; string sss.substr(2); //位权累积法 long long res0; long long power1; for(int iss.size()-1;i0;i--){ char c; css[i]; long long val; if(isdigit(c)){ valc-0; } else{ valtoupper(c)-A10; } resval*power; power*16; } coutresendl; return 0; } //方法二乘积致使移位 #include iostream #include bits/stdc.h using namespace std; int main() { string s; cins; //从左往右累乘左移 string sss.substr(2); long long res0; for(int i0;iss.size();i){//正序遍历 char c; css[i]; long long val; if(isdigit(c)){ valc-0; } else{ valtoupper(c)-A10; } resres*16val; //位移 //可以写成位移符的形式 //res(res4)val; } coutresendl; return 0; } //方法三库函数调用 #include iostream #include bits/stdc.h using namespace std; int main() { //函数库糖 string s; cins; long long res0; resstoi(s,nullptr,16); coutresendl; return 0; }