2018年吉林大学软件学院软件工程学硕复试笔试题回忆
2018-03-24 08:16
393 查看
备注:笔试编程题目为手写,满分150分,时间为2小时。
今年为第二年招生,第一年复试题目详见
https://blog.csdn.net/qq_27513221/article/details/79424084
从题目类型上看,大体有递归,穷举,数组和字符串这几种类型。比较容易归纳
参考代码:
第一位数是1;
第二位数是2;
奇数位为前两项之和,偶数项为前两项之差;
将100以内序列按递增排序并输出
参考代码:
(x1−x2)2+(y1−y2)2−−−−−−−−−−−−−−−−−−−√(x1−x2)2+(y1−y2)2
求所有线段中的最短线段
参考代码:
今年为第二年招生,第一年复试题目详见
https://blog.csdn.net/qq_27513221/article/details/79424084
从题目类型上看,大体有递归,穷举,数组和字符串这几种类型。比较容易归纳
1. “完数“判断(40分)
一个正整数的所有因子之和等于它本身,这样的数称为完数。如:1 + 2 + 3 = 6,则6为完数。输出100以内的所有完数。参考代码:
#include<bits/stdc++.h> //包含所有库函数 using namespace std; int isWholeNUM(int n){ //使用函数进行判断 int sum = 0; for(int i = 1;i < n;++i){ if(n%i == 0) sum += i; } if(sum == n) return 1; else return 0; } int main(){ for(int i = 1;i < 100;++i){ if(isWholeNUM(i)) cout<<i<<endl; } return 0; }
2. 序列输出(40分)
假定序列满足:第一位数是1;
第二位数是2;
奇数位为前两项之和,偶数项为前两项之差;
将100以内序列按递增排序并输出
参考代码:
#include<bits/stdc++.h> using namespace std; int r_list(int n){ if(n == 1) return 1; else if(n == 2) return 2; else if(n%2 != 0) return r_list(n - 1) + r_list(n -2); else if(n%2 == 0) return r_list(n - 1) - r_list(n -2); } int main(){ int num; vector<int> array; for(int i = 1;i <= 100;++i){ num = r_list(i); array.push_back(num); } sort(array.begin(),array.end()); for(int i = 0;i < array.size();++i) cout<<array[i]<<endl; return 0; }
3. 最短线段(40分)
平面上存在100个点,任意两点之间可以连接成一条线段。假设存在点(x1,y1),点(x2,y2),则两点之间的距离公式为(x1−x2)2+(y1−y2)2−−−−−−−−−−−−−−−−−−−√(x1−x2)2+(y1−y2)2
求所有线段中的最短线段
参考代码:
#include<bits/stdc++.h> using namespace std; struct point{ int x; int y; } array[99]; //包含100个点,从0开始 int main(){ int length = 0,max = 0; for(int i = 0;i < 100;++i) //输入100个点的坐标 cin>>array[i].x>>array[i].y; for(int i = 0;i < 100;++i){ //计算100个点之间所有组合的线段长度 for(int j = 0;j < 100;++j){ length = (array[i].x - array[j].x)^2 + (array[i].y - array[j].y)^2; if(max < length) max = length; } } cout<<sqrt(max); return 0; }
4. 0串数目(30分)
输入一段序列,连续两个0及以上称为0串。假如为001000,其中0串的数目为2。输入以2为结束,问序列中是否存在两个或两个以上的0串#include<bits/stdc++.h> using namespace std; int main(){ string num; int m = 0,n = 0; // while((cin>>num) != '2'); //题意要求应该是这样,当输入2时自动终止输入,但是报错 cin>>num; //因此手工输入 for(int i = 0;i < num.length();++i){ if(num[i] == '0') m++; else m = 0; if(m >= 2 && num[i + 1] != '0') n++; } if(n >= 2) cout<<"OK"<<endl; else cout<<"No"<<endl; return 0; }
相关文章推荐
- 2017年吉林大学软件学院学硕高级程序设计复试题回忆
- 2011年华科计算机考研复试笔试算法、数据库(回忆版)
- 2011年华科计算机考研复试笔试算法、数据库(回忆版)
- 笔试与面试复试要点
- 最新阿里巴巴2014校招研发笔试题目回忆
- 360笔试题回忆版 2014 武汉站
- 2014网易游戏TTT笔试(中山大学,可能不全哦,我回忆的)
- 2014网易游戏TTT笔试(中山大学,可能不全哦,我回忆的)
- 中国银行笔试题目回忆
- 2006---2009年杭电计算机历年研究生复试---笔试编程
- 2017年网易游戏数据挖掘/机器学习实习生笔试回忆
- 吉大计算机学硕复试(回忆版)-2015(没全写)
- 2013年9月14日星期六 阿里里巴巴测试开发笔试题(回忆版)
- 2017年5月14日青岛卫计委笔试真题解析---综合类(考生回忆版)
- 中兴2014校园招聘笔试题回忆
- 深圳移动笔试回忆
- 建行总行信息技术类09、10、11三年的笔试回忆资料合集
- 新鲜的某公司笔试题(回忆版)
- 深圳移动笔试回忆
- 2015人行计算机笔试回忆