机试——刷题总结

张开发
2026/4/12 4:46:41 15 分钟阅读

分享文章

机试——刷题总结
printf输出格式格式int -%dfloat -%fdouble - %lflong double - %Lflong long - %lldchar -%c左对齐右对齐补零浮点数或者整数都可以这样写printf函数的左右对齐格式scanf指定列宽若输入的精度过高超过该类型的范围但又需要把输入全部读进去此时可强制提高精度即列宽如下所示将列宽提高至15位。scanf(%15Lf,x);math.h库常用函数sqrt()可计算平方根开平方pow(x,y)可计算x的y次方返回值为浮点数取整函数round()用于计算某个数的四舍五入。注意括号内必须为小数cmath库常用函数ceil 函数是标准库自带的向上取整函数返回值是float等浮点数string和char比较字符时string和char用单引号给定连续的数字或字符串或串用时由于cin读取数字的特殊方式当读取出非数字字符时会将其留在缓冲区不做处理所以我们可以这样连用cin运算符前有空格或没有空格都可以这样用c——string头文件 #includestring特性支持比较和拼接“”读取cin是最常用的方法之一但它在遇到空格、TAB或回车时会停止读取。getline可以读取整行字符串包括空格。但getline会读取前一个输入的换行符需在getline前加getchar()常用函数s.size()或者s.length()返回字符串长度s.compare(b)比较s和bb必须为字符串用双引号sb返回-1sb返回0sb返回1查找子串a.find(b,x)从位置为x的地方开始查找如果该函数的返回值为a.npos(表示无效则在 a 中不存在该子串否则存在删除字符 s.erase(a,b)从位置为a开始删除长度为b的字符。替换 s.replece(a,b,c)a是替换字串的起始位置b是替换长度c是替换字串翻转字符串 reverse(s.begin(),s.end());char数组在 C 内部表示中认为 char 数组所表示的字符串以\0结尾所以我们相当于将结尾位放在了被赋\0的位置系统自然就不会继续读下去了。c——栈stack头文件stack初始化stackint st; //定义int类型的栈st栈的操作出栈st.pop()删除栈顶元素入栈st.push(k)将元素k压入栈st中获取栈顶元素st.top()输出栈顶元素计算栈的元素个数st.size()判断栈空st.empty()c——队列queue头文件queue初始化queueint q;队列操作删除队列第一个元素q.pop()在队尾插入一个元素q.push(x) 将x插入队列尾部获取队列头部元素q.front()获取队列尾部元素q.back()计算队列元素个数q.size()判断队列空q.empty()二叉树根据先序和中序序列建二叉树二叉树——根据先序(后序)、中序 建树超详讲解。_如何利用先序和中序创建二叉树-CSDN博客二叉树的遍历先序遍历typedef struct bitree{ int data; struct bitree *lchild,*rchild; }binode,*bitree; void preorder(bitree root){ if(rootNULL) return ; visit(root); preorder(root-lchild); preorder(root-rchild); }#includebits/stdc.h using namespace std; char a[15][15]; int main(){ int r,c,k; cinrc; for(int i0;ir;i){ for(int j0;jc;j){ cina[i][j]; } } cink; if(k%3600){ for(int i0;ir;i){ for(int j0;jc;j) couta[i][j]; coutendl; } }else if(k%36045){ for(int i0;irc;i){ for(int z0;zabs(r-i-1);z) cout ;//列数减去行数为空格数 for(int zr-1;z0;z--){ for(int jc-1;j0;j--){ if(zji)//行加上列是输出的行数从0开始 couta[z][j] ; } }coutendl; } }else if(k%36090){ for(int i0;ic;i){ for(int jr-1;j0;j--){ couta[j][i]; } coutendl; } }else if(k%360135){ for(int i0;irc;i){ for(int z0;zabs(c-i-1);z) cout ; for(int zr-1;z0;z--){ for(int j0;jc;j){ if(z-jr-i-1) couta[z][j] ; } } coutendl; } }else if(k%360180){ for(int ir-1;i0;i--){ for(int jc-1;j0;j--){ couta[i][j]; } coutendl; } }else if(k%360225){ for(int i0;irc;i){ for(int z0;zabs(r-i-1);z) cout ; for(int z0;zr;z){ for(int j0;jc;j){ if(zjrc-2-i) couta[z][j] ; } } coutendl; } }else if(k%360270){ for(int ic-1;i0;i--){ for(int j0;jr;j){ couta[j][i]; }coutendl; } }else if(k%360315){ for(int i0;irc;i){ for(int z0;zabs(c-i-1);z) cout ; for(int z0;zr;z){ for(int j0;jc;j){ if(c-1-ij-z) couta[z][j] ; } } coutendl; } } return 0; }switch语句当x的值能与case中的值匹配上便执行当前case语句以及之后所有case语句若不想出现这种情况需在每个case语句中加入break;即可switch(x){ case 0: cout0; case 1: cout1; case 2: cout2; default: cout3; } switch(x){ case 0: cout0; break; case 1: cout1; break; case 2: cout2; break; default: cout3; break; }小数点的精度问题若要求精度误差极小则先乘把小数点往后放将其当作整数计算最后再除计算圆的面积高精度pi可以调用cmath库中的M_PI全排列法一stl next_permutation()n是要排列的长度即前n个数字进行全排列。返回该排列的前一个排列prev_peemutation()若有返回true没有则返回false判断质数质数除了1和它本身外没有其他因子//时间复杂度为根号n bool isprime(int n){ for(int i2;i*in;i){//枚举到n的平方根即可降低时间复杂度 if(n%i0) return 0; } return 1; }求最大公约数__gcd(a,b)函数求a和b的最大公约数头文件为#includealgorithm辗转相除法int gcd(int a,int b){ if(!b) return a; //递归停止条件 else return gcd(b,a%b); }int型的最大值int maxpow(2,32)-1排序sort传入数组首地址以及首地址n的格式cmp1是排序规则默认升序ASCALL码的字母循环移动以小写字母为例s[i]-an)%26a //右移n位 s[i]-a-n26)%26a //左移n位字符转大小写toupper(char c) 将c转为大写字母的int值tolower(char c) 将c转为小写字母的int值开关灯完全平方数eg.1,4,9,16 ....有奇数个因子非完全平方数有偶数个因子因为2*24因子相同因此会出现奇数个因子而非完全平方数中因子都是成对出现初始为关找开灯的编号。偶数次操作后灯的状态不变为关只需输出编号为完全平方数奇数次操作即可计算字符串式子的值若符号只有和-则直接用c的cin读入可直接将和-号看作正负号计算总结经验数据类型一般往大定义遇到除法和保留小数点后n位的要用浮点数的数据类型在运算时式子要乘1.000……n1位的0字符与ascall码的转换可以变为 char和int转换计算已知三角形三边边长的面积海伦公式判断三条边是否能构成三角形是否任意两边之和大于第三边若数组是全局变量自动初始化为0若数组是局部变量需手动初始化字符串需用双引号不然会报错end

更多文章