上机笔试
gent__chen
这个作者很懒,什么都没留下…
展开
-
【上机笔试之六】Hash应用
将存储位置与数据本身对应起来的存储手段就是Hash。例如上一节的【上机笔试之五】计算两个日期的差值,将一个日期对应的预处理存储在一个以该日期的年月日为下标的三位数组中。该题的目的是在读入N名学生的成绩,将获得某一给定分数的学生人数输出。这里的处理方法是:以分数为数据的下标,就可以统计每个分数的数量,每一个数组的值就是所对应的人数。代码如下:#include <iostream>using name原创 2017-03-09 16:57:31 · 346 阅读 · 0 评论 -
【上机笔试之十六】输出素数
题目要求:输出所有从1到整数n之间(不包括两端)个位为1的素数。#include<iostream>#include<math.h>using namespace std;int judge_sushu(int num) { if (num <= 0) { return 0; } else { for (int i = 2;原创 2017-05-02 22:20:53 · 300 阅读 · 0 评论 -
【上机笔试之十五】判断是否是素数
题目要求:判断一个数是否是素数。 思路:循环从2到n开根号的数,判断是否是不是素数。#include<iostream>#include<math.h>using namespace std;int judge_sushu(int num) { if (num <= 0) { return 0; } else { for原创 2017-05-02 22:18:48 · 374 阅读 · 0 评论 -
【上机笔试之十四】最小公倍数
计算两个数的最大公约数。一般方法:遍历所有不大于a和b的整数,看看是否同时满足余数为0。如果其中一个为0,则最大公约数就是另外一个不为0的数。如果两个都为0,则没有最大公约数(所有数都是可以整除)。欧几里德算法:该算法证明,a和b的最大公约数同时也是b和(a mod b)的最大公约数。所以就可以不断循环,直到a mod b 等于0时,b就是最大公约数。#include<iostream>us原创 2017-05-02 22:16:36 · 284 阅读 · 0 评论 -
【上机笔试之十三】最大公约数
计算两个数的最大公约数。一般方法:遍历所有不大于a和b的整数,看看是否同时满足余数为0。如果其中一个为0,则最大公约数就是另外一个不为0的数。如果两个都为0,则没有最大公约数(所有数都是可以整除)。欧几里德算法:该算法证明,a和b的最大公约数同时也是b和(a mod b)的最大公约数。所以就可以不断循环,直到a mod b 等于0时,b就是最大公约数。#include<iostream>us原创 2017-05-02 22:13:45 · 278 阅读 · 0 评论 -
【上机笔试之十二】数位拆解-进制转换
题目要求:设计一个特殊的乘法算法:123 * 45 = 1*4 + 1*5 + 2*4 + 2*5 + 3*4 + 3*5 = 54 这里用到了数组的拆分,保存在数组中。#include<iostream>using namespace std;void main(){ int a, b; int buf_a[10], buf_b[10]; int size_a =原创 2017-05-02 22:11:27 · 355 阅读 · 0 评论 -
【上机笔试之十一】数位拆解-特殊乘法
题目要求:设计一个特殊的乘法算法:123 * 45 = 1*4 + 1*5 + 2*4 + 2*5 + 3*4 + 3*5 = 54 这里用到了数组的拆分,保存在数组中。#include<iostream>using namespace std;void main(){ int a, b; int buf_a[10], buf_b[10]; int size_a =原创 2017-05-02 22:08:11 · 333 阅读 · 0 评论 -
【上机笔试之十】栈应用-扣号匹配
括号匹配问题是堆栈的一个典型应用。题目要求:对于每个一个’(‘,如果没有对应的’)’与之匹配,则对应标号下输出’$’。对于每个一个’)’,如果没有对应的’(‘与之匹配,则对应标号下输出’?’。实现代码如下:#include <iostream>#include<stdio.h>#include <stack>using namespace std;void main() { stac原创 2017-03-09 17:14:07 · 369 阅读 · 0 评论 -
【上机笔试之九】贪心算法-换零钱
换零钱问题也是常考的一种题型。给定一个数,将其换成最少数量的零钱。代码如下:#include <iostream>using namespace std;void main() { int change; int left, i; int arr[4] = { 10, 5, 2, 1 }; i = 0; while (1) { left =原创 2017-03-09 17:08:09 · 898 阅读 · 0 评论 -
【上机笔试之八】二分法查找
对于查找类题目,二分法查找是最高效的方法,有时题目也规定必须使用二分法。二分法查找的前提是,数据先按一个顺序排好序。代码如下:#include <iostream>using namespace std;//二分法查找/折半查找int binarySearch(int array[], int len, int key){ int low = 0, high = len - 1, mi原创 2017-03-09 17:05:29 · 447 阅读 · 0 评论 -
【上机笔试之七】Hash应用(2)-从大到小顺序输出其中前m大的数
题目要求:给定n个整数,按从大到小的顺序输出其中前m大的数。对于这类题目,一般人的第一想法都是,按排序,再取前m个数。但这时需要考虑题目所给定的时间限制和内存限制。最高效的方法还是使用hash,以数为数据的下标,就可以统计每个分数的数量,下标从小到大排列,如果不为0则输出,直到输出完毕。代码如下:#include <iostream>#include <stdlib.h>using namesp原创 2017-03-09 17:03:02 · 820 阅读 · 0 评论 -
【上机笔试之五】计算两个日期的差值
计算两个日期差的天数是上机笔试中常考的一种提醒,这里程序的大致思路是:预先计算出每一天距离1900年1月1日的天数,两次结果一做差就是两个日期差的天数。代码如下:#include <iostream>#include <algorithm>#include <string.h>using namespace std;//判断是否是闰年#define ISYEAP(x) ((x % 100原创 2017-03-09 16:50:42 · 470 阅读 · 0 评论 -
【上机笔试之四】快速排序(2)
这里介绍快速排序的应用,C++自带的快速排序函数,能够定义比较复杂的排序规则。每个结构体包含名字、年龄和分数。规则定义:将学生信息按成绩进行排序,成绩相同的则按照姓名的字母序进行排序。然后输出学生信息,按照如下格式:姓名、年龄、成绩。#include <iostream>#include <algorithm>#include <string.h>using namespace std;st原创 2017-03-09 16:48:08 · 386 阅读 · 0 评论 -
【上机笔试之三】快速排序
快速排序是常用的排序方法,C++中提供sort函数进行快速排序,并且可以设置排序的规则,快速排序代码如下:#include <iostream>#include <algorithm>using namespace std;//定义排序规则bool cmp(int x, int y) { return x > y; }void main(){ int n;原创 2017-03-09 16:43:15 · 389 阅读 · 0 评论 -
【上机笔试之二】冒泡排序
冒泡排序是排序方法中最简单的一种,但时间复杂度很高,是n的平方,笔试中一般使用快速排序。冒泡排序的代码如下:#include <iostream>#include <cstring>using namespace std;void main(){ int n; int num; int buf[100]; while ( scanf("%d", &n) !=原创 2017-03-09 16:41:38 · 386 阅读 · 0 评论 -
【上级笔试之一】数据输入
绝大多数的上机笔试题都需要数据输入,使用推荐比较好用的输入方式:#include <iostream>#include <cstring>using namespace std;void main(){ int n; int num; int buf[100]; while ( scanf("%d", &n) != EOF) { for (in原创 2017-03-09 16:38:02 · 324 阅读 · 0 评论 -
【上机笔试之十七】A的B次方
题目要求:计算A的B次方,取结果的后三位 思路:将次方降维,再计算结果。取结果的后三位,这就可以每次只取后三位计算。#include<iostream>#include<math.h>using namespace std;void main(){ int a; int b, ans = 1; while (scanf("%d%d", &a, &b) != EOF)原创 2017-05-02 22:24:41 · 523 阅读 · 0 评论