一、输入一组整数

这个就是输入一组整数,数组的话没法用,因为数组是定长的,所以我们采用vector结合cin.get()进行判断。

int input;
vector<int> vec;//vector的好处就在是一个动态数组,我们可以在不指定长度的情况下,输入任意长度的数字
while(cin>>input){vec.push_back(input);if(cin.get()=='\n')break;
}

二、单链表的递归逆序输出

我们在机试中经常遇到单链表的逆序输出的问题,2018北理的机试题中规定必须采用递归、链表输出,所以必须得掌握。

void reverse_input_list(node *q){if(q->next!=NULL)reverse_input_list(q->next);cout<<q->data<<" ";
}

在使用的时候,采用头插或者尾插,建立好链表之后把头结点传入函数中,就OK了。

三、等腰梯形或者三角形

这也是机试中经常出现的点,虽然不难,但是有时候临时想还是考验逻辑能力的。

cin>>n;
for(i=0;i<n;i++){for(j=0;j<n-1-i;j++)cout<<' ';for(k=0;k<n+2*i;k++)cout<<'*';cout<<endl;
}

四、关于结构体

这一类题经常是以学生信息、成绩等为背景进行考察,这个是一个关于学生成绩输入,统计挂科两门以上的学生、输出信息,并按照每个人的挂科数目进行排序输出,这个难点在成绩的不确定。我是在结构体中定义了一个vector< float> score.

typedef struct Student{string name;int no;//学号vector<float> score;
}student;

下面是具体的输入信息:

while(cin>>scor){if(scor == -1)break;s[cnt].score.push_back(scor);//cnt是结构体数组,表示第几个学生。
}

五、字符串中的小数,输出出来

我们经常遇到需要把一个字符串中的数字输出出来,可以是整数、小数、正负数(前面有正负号需要带着正负号)。首先是输入之后,我们需要进行判断。

cin>>s;int i;for(i=0;i<s.length();i++){if(s[i]>='0'&&s[i]<='9' || s[i]=='+'||s[i]=='-'){i=judge(i);//此处是第一次输入i,经过完整的判断在//输出完这个数字之后,下一个不符合判断条件的字符的开始//此处的i的精髓,judge()函数返回的是第一个不符合输出条件的字符的下标,我们用i接受这个//下标,对现在的i++再次开始判断是否符合进入判断的条件,精髓认真理解。}}

接下来就是进行小数、负数、正数、纯数字的输出了,其中还包括类似于+004.500这种数字输出为+4.5。

int judge(int i){//这个i是元素的下标。int flag=1;//负数输出时,将flag赋值-1,乘上输出的数。bool a=false;double point=1,num=0;//表示点,在查找的过程中,可以将.后面的数字呈上point。do{//在循环中会一直判断下一个字符是不是符合要求,.或者数字来操作。if(s[i]>='0'&&s[i]<='9'){//纯数字或者小数的精髓,通过设置point的值来使其不断*0.1,使得2.3333这种也可以输出。if(point>=1){num=num*10+s[i]-'0';}else{num=num+point*(s[i]-'0');point*=0.1;//考虑存在2.333这种情况。}}else if(s[i]=='-')flag *= -1;else if(s[i]=='+')a=true;else if(s[i]=='.')point*=0.1;}while(!endof(s[++i])&&i<s.length());if(a)cout<<'+';cout<<num * flag<<' ';return i-1;//在循环判断的时候,是判断符合条件的下一位是不是符合条件,所以i在返回时需要-1.
}

六、关于字符串的拼接问题

这个题是关于全排列的,意思是给a,b,c三个字符,输入n,加入n=2,那就输出aa,ab,ac,bb,ba,bc,cc,cb,ca,9最后再输出一共有几个,这个题我的思路是,一个string,一个vector< char> v;

 if(n==1){show(v);return 0;}else{while(--n){v=fun(v,a);//此处必须带参数做,例:n=3,其运行情况是先n=2,此时循环结束之后,v中的字符为aa,ab,ac.....,之后再n--,n=1。//结果保存了之后返回给v,然后v再作为参数传回给fun,//此时的v是aa,ab,ac.....,然后继续拼接单个字符,以此类推n=4,n=5...}show(v);    }

下面是fun函数,是用了一个返回vector的函数,因为每次这个返回的vector都要作为下一次循环的参数进行继续判断。

vector<string> fun(vector<string> v,string a){int i,j;vector<string> ve;for(i=0;i<v.size();i++){for(j=0;j<a.length();j++){string tem="";//初始化字符串为空tem+=v[i];tem+=a[j];ve.push_back(tem);}}return ve;
}

七、提取一个整数的每位数

就是在判断回文数、水仙花数的时候,我们需要知道输入数字的每一位,然后进行判断。

num=n;
len=0;
while(num){arr[len++]=num%10;//取余之后的结果存放在arr中,是从低位到高位的存放num/=10;//每次取余结束之后,/10,因为int是向下取整,所以123除10就是12.
}

八、辗转相除求最大公约数

int gcd(int a,int b){int t;if(a<b){///使a大b小t=b;b=a;a=t;}while((t=a%b)!=0){///余数不为0时a=b;///被除数作除数b=t;///余数作被除数}///余数总是比除数小return b;///最后整除的除数是最大公约数
}

九、读写文件

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
int main(){char fname[20]="abc.txt";ofstream out(abc.txt);if(out.is_open()){out<<"Hello,file!"<<endl;}char buffer[1024];ifstream in("abc.txt");  if(!in.is_open()){cout<<"open file failed!"<<endl;exit(1);}while(!in.eof()){in.getline(buffer,256);cout<<buffer<<endl;}in.close();return 0;
}

复试上机指南之小技巧篇(1)相关推荐

  1. Git使用方法(三)-小技巧篇

    Git使用方法(三)-小技巧篇 标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本. 创建标签 命令git tag <tagname>用 ...

  2. 测试手机新机软件,玩机小技巧 篇一:手把手教你快速验新机——写给剁手节买了新手机的值友...

    玩机小技巧 篇一:手把手教你快速验新机--写给剁手节买了新手机的值友 2020-12-10 17:39:14 29点赞 97收藏 11评论 创作立场声明:本文旨在分享购入新机器后如何检验手机完好的小技 ...

  3. ibm x201 怎么清理内部_维修小技巧 篇五:ThinkPadX201i拆机换散热风扇清灰教程

    维修小技巧 篇五:ThinkPadX201i拆机换散热风扇清灰教程 2020-11-25 21:45:44 16点赞 14收藏 42评论 创作立场声明:拆装有风险.拆装有风险.拆装有风险,欢迎收藏,点 ...

  4. 【实战 Ids4】小技巧篇:自定义登录页操作

    今天的内容很简单,1分钟就能看完,5分钟就能学会,但是却是在我们平时开发中必须要学会的一个小知识点,我就不让大家走弯路了,直接看操作. 在平时的IdentityServer4开发中呢,我们都是根据官方 ...

  5. 轻松制作GIF动画!教你玩转PS时间轴之5个小技巧篇

    通过前两篇文章,我们已经知道制作动画的基本知识的和技巧,下面通过5个非常有用的知识点跟大家更深入地探索PS时间轴.文末附上PSD,可以下载后自行分析动画技巧. 往期回顾: <新手指南!手把手教你 ...

  6. 第 7 节:前端面试指南 — 微信小程序篇(附面试题答案)

    这周很多读者朋友都在「微信小程序」的视频了. 前 6 期没看的同学,建议先看完再来看这一期的,传送门: 第 1 期:「简历篇」含简历模板文件 第 2 期:「HTML篇」含面试题&答案 第 3 ...

  7. word日常排版——小技巧篇(非常实用)

    1.一键保存WORD中的所有图片 如果WORD文档中全是图片怎么保存呢?一个个保存费时了.你可以这样一键全部保存: ① 选择文件功能选项卡,点击另存为 ② 将文件类型保存为网页(.html) ③ Wo ...

  8. 21考研复试上机常见题型、技巧与方法

    第一章 入门模拟 题目要求输入T个数 while(T--) {cout<<T; } 题目要求输出用空格隔开,最后一个不带空格 for(int i = 0; i < n; i++) { ...

  9. 苹果系统小技巧 篇六:Mac的10个必备小技巧,原来Windows的功能早在Mac上实现了

    一.开启Mac的多桌面 多桌面的功能是Mac开始有,后来Windows跟进的,不得不说这个功能对于管理文件确实很有帮助. 在触控板中三指向上滑动,即可添加或者删除桌面 2. 你可以在这些桌面来回切换, ...

最新文章

  1. hdu 4278 2012天津赛区网络赛 数学 *
  2. Linux课程第十三天学习笔记
  3. Silverlight 1.0 RC SDK 预览
  4. 您的光纤电缆和测试仪是否准备好用于400G以太网?
  5. Vue 实现左边导航栏且右边显示具体内容(element-ui)
  6. chainmaker 区块中最大交易数 block_tx_capacity设置 区块大小 区块容量
  7. LINUX下载编译signalwire-c
  8. 以后给孩子起名字不用发愁了,先存着
  9. ES07--性能调优03(全面考量)
  10. 【22/04】Chrome 里的请求报错 “CAUTION: Provisional headers are shown“ 是什么意思?
  11. JAVA常用工具类汇总
  12. Google BETA版本测试介绍
  13. Oracle查询数据表数据很少却很慢
  14. 帆软bi 观远bi_与电源bi一起加入
  15. 卷尺精度标准_卷尺的精度为多少mm 卷尺测量误差的原因有哪些
  16. video视频快进拖动限制
  17. linux彻底卸载nginx,linux彻底删除nginx
  18. 反向代理,正向代理,网关
  19. 股票资管分仓和期权资管分仓功能的区别及搭建
  20. 数据库 - 建模:实体关系图(ERD)

热门文章

  1. 电梯蓝光主板服务器操作系统微软,蓝光电梯主板问题的解决
  2. 基于arudino和HC08的舵机控制
  3. 手机号注册登录(保姆级)
  4. 四足机器人综述/四足机器人入门/四足机器人基础储备知识
  5. “新能源+国产化”双重利好,昂视乘风出圈
  6. android v4 v7 v14,Android Support v4、v7、v13、v14、v17的区别和应用场景
  7. FCC 2018 前端技术大会总结
  8. 借助普通图片生成 icns 图标文件
  9. 2021年熔化焊接与热切割新版试题及熔化焊接与热切割免费试题
  10. win10下软件打开乱码问题