厦门大学考研上机真题

来自于:王道论坛-2017厦大计算机专硕复试题

判断回文数字

第一题判断一个整数是否为回文数,例如123321

 1 #include <stdio.h>
 2
 3 // 判断是否为回文数列
 4 int main()
 5 {
 6     int num, huiwei, temp;
 7     while(scanf("%d", &num) != EOF)
 8     {
 9         temp = num;
10         huiwei = 0;
11         while(temp > 0)
12         {
13             huiwei = huiwei * 10 + (temp % 10);
14             temp = temp / 10;
15         }
16         if(huiwei == num)
17             printf("Yes\n");
18         else
19             printf("No\n");
20     }
21 }

第二题求a-b之间的非素数个数,用最小的代价。

 1 #include <stdio.h>
 2 #include <math.h>
 3
 4 // a-b之间的非素数个数,用最小的代价
 5
 6 int isPrime(int n)
 7 {
 8     int i;
 9     int flag = 1;
10     int m = (int)sqrt(n) + 1;
11     if(n < 2) flag = 0;
12     for(i = 2; i < m; i++)
13     {
14         if(n % i == 0)
15         {
16             flag = 0;
17             break;
18         }
19     }
20     return flag;
21 }
22
23
24 int main()
25 {
26     int a, b;
27     int i, count = 0;
28     while(scanf("%d %d", &a, &b) != EOF)
29     {
30         for(i = a; i <= b; i++)
31         {
32             if(isPrime(i) == 0) //not prime
33                 count++;
34         }
35         printf("%d", count);
36     }
37     return 0;
38 }

第三题16进制不进位的加法,输入要考虑大小写的不同,输出只要大写。

这个题不知道什么意思,暂时没做

最大子串和.c

求一个整型数组,所有子串中元素和最大的子串,输出和是多少,子串是什么。比如 {1,2,3,4,5,-1,-2}最大子串是{1,2,3,4,5},和是15。

这个题目好像是求最大子数列和问题。并给出最大数列

 1 #include <stdio.h>
 2
 3 int main()
 4 {
 5     int n, num[1001], i;
 6     int maxSum = 0, subSum = 0;
 7     int start, t, end;
 8     scanf("%d", &n);
 9     for(i = 0; i < n; i++)
10     {
11         scanf("%d", &num[i]);
12     }
13
14     for(i = 0; i < n; i++)
15     {
16         subSum += num[i];
17         if(subSum < 0)
18         {
19             subSum = 0;
20             t = i + 1;
21         }
22         if(subSum > maxSum)
23         {
24             maxSum = subSum;
25             start = t;
26             end = i;
27         }
28     }
29     printf("%d\n", maxSum);
30     for(i = start; i <= end; i++)
31         printf("%d ", num[i]);
32     return 0;
33 }

运行结果如下

第一行输入 数列个数

第二行 输入 数列

第三行 输出最大子数列和

第四行 输出最大和的数列

求出现的最多的次数

 1 #include <stdio.h>
 2 // 大概的思路就是定义两个数组,一个用于存储数字,另一个用于存该数字
 3 // 出现的次数
 4
 5 int main()
 6 {
 7     int n[101], count[101] = {0};
 8     int num, i, j, max = 0, max_index;
 9     scanf("%d", &num);
10     for(i = 0; i < num; i++)
11     {
12         scanf("%d", &n[i]);
13         count[i] += 1;
14     }
15
16     for(i = 0; i < num; i++)
17     {
18         for(j = i+1; j < num; j++)
19             if(n[i] == n[j])
20                 count[i] ++;
21     }
22     // find max
23     for(i = 0; i < num; i++)
24     {
25         if(count[i] > max)
26         {
27             max = count[i];
28             max_index = i;
29         }
30     }
31
32     printf("%d\n", n[max_index]);
33     return 0;
34 }

运行结果

第一行输入个数

第二行输入数字

第三行输出出现最多的数字

快速排序

快速排序主要是把树上的代码看了遍,自己理解了一下,然后自己默写下来

 1 #include <stdio.h>
 2
 3 int qk_pass(int n[], int low, int high)
 4 {
 5     int x = n[low];
 6     while(low < high)
 7     {
 8         while(low < high && x <= n[high]) //hign 从右往左找比x小的值
 9             high--;
10         if(low < high) // 找到了x > n[hight]的情况
11         {
12             n[low] = n[high];
13             low++;
14         }
15         while(low < high && x >= n[low])
16             low++;
17         if(low < high)
18         {
19             n[high] = n[low];
20             high --;
21         }
22     }
23     n[low] = x;
24     return low;
25 }
26
27 void quick_sort(int n[], int low, int high)
28 {
29     int pos = 0;
30     if(low < high)
31     {
32         pos = qk_pass(n, low, high);
33         quick_sort(n, low, pos-1);
34         quick_sort(n, pos+1, high);
35     }
36 }
37
38 int main()
39 {
40     int n[101], num, i;
41     scanf("%d", &num);
42     // input
43     for(i = 0; i < num; i++)
44     {
45         scanf("%d", &n[i]);
46     }
47     // quick sort
48     quick_sort(n, 0, num-1);
49     // output
50     for(i = 0; i < num; i++)
51     {
52         printf("%d ", n[i]);
53     }
54     return 0;
55 }

运行结果如下:

第一行输入元素的个数

第二行输入数组元素

第三行输入排序后的结果

时间: 2024-08-09 19:50:48

厦门大学考研上机真题的相关文章

北京航空航天大学计算机系考研复试上机真题及答案---2014

第一题,阶乘数. 输入一个正整数,输出时,先输出这个数本身,跟着一个逗号,再输出这个数的各位数字的阶乘和,等号,阶乘和的计算结果,并判断阶乘和是否等于原数,如果相等输出Yes,否则输出No.题目说明输入的正整数以及其各位阶乘和都不会超出int型的表示范围. 输入样例1: 145 输出样例1: 145,1!+4!+5!=145 Yes 输入样例2: 1400 输出样例2: 1400,1!+4!+0!+0!=27 No 第二题,五子棋. 输入一个19*19的矩阵,只包含数字0.1.2,表示两人下五子

2015考研计算机真题大题信号量进程同步问题

哈哈哈,拿到考研的题目来考考你们,看看你们做的出来不,谁让我是正在考计算机研究生的筒子,希望能马上加入研发团队,毕竟我那么想当个技术宅. 45. 有A.B两人通过信箱进行辩论,每人都从自己的信箱中取得对方的问题.将答案和向对方提出的新问题组成一个邮件放入对方的邮箱中,设A的信箱最多放M个邮件,B的信箱最多放 N个邮件.初始时A的信箱中有x个邮件(0<x<M). B 中有y个(0<y<N).辩论者每取出一个邮件,邮件数减1.A.B两人操作过程:Code BeginA{While(TR

计算机考研复试真题 众数

题目描述 输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个). 输入描述: 测试数据有多组,每组输入20个1-10之间的数. 输出描述: 对于每组输入,请输出1-10中的众数. 示例1 输入 5 1 5 10 3 5 3 4 8 6 8 3 6 5 10 7 10 2 6 2 输出 5 //计算机考研复试真题 众数 /* 程序设计思想:假双数组法,数组值存放出现的次数,数组下标存放对应的数. */ //程序实现:

计算机考研复试真题 简单计算器

题目描述 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. 输入描述:     测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔.没有非法表达式.当一行中只有0时输入结束,相应的结果不要输出. 输出描述:     对每个测试用例输出1行,即该表达式的值,精确到小数点后2位. 示例1 输入 1 + 2 4 + 2 * 5 - 7 / 11 0 输出 3.00 13.36 /* 天大2018考研编程题 程序设计思想:

考研上机水题整理——浙大2006

题目1019:简单计算器 栈的比较经典的运用,记得用栈,队列和容器的时候,要清空,其次就是用栈的基本套路,取值,弹出,推入,输出 1 #include<stdio.h> 2 #include<stack> 3 using namespace std; 4 5 int main() 6 { 7 int a,b; 8 char c,d; 9 stack <double> s; 10 while(~scanf("%d ",&a)&&

计算机考研复试真题 abc

题目描述 设a.b.c均是0到9之间的数字,abc.bcc是两个三位数,且有:abc+bcc=532.求满足条件的所有a.b.c的值. 输入描述: 题目没有任何输入. 输出描述: 请输出所有满足题目条件的a.b.c的值. a.b.c之间用空格隔开. 每个输出占一行. 示例1 输入 输出 /* 解题思路:计算每次输入小于a的数的和即可. */ #include<iostream> using namespace std; int main(){ int a,temp,sum=0; cin>

计算机考研复试真题 N阶楼梯上楼问题

题目描述 N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入描述: 输入包括一个整数N,(1<=N<90). 输出描述: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数. 示例1 输入 4 输出 5 /*程序设计思想:类似于斐波拉契数列,采用迭代思想.*/ #include <iostream> using namespace std; long long F[100]; int main() { F[1] = 1; F[2

2014年计算机考研真题重点选择题部分真题及解析

5个元素有4种编码方案,下列不是前缀编码的是 A.01,0000,0001,001,1 B.011,000,001,010,1 C.000,001,010,011,100 D.0,100,110,1110,1100 ——————————————————涉及考点:字符的前缀编码—————————————————— (考研专硕复习计划http://www.kyjxy.com/zhuanshuo/) 用哈希(散列)方法处理冲突(碰撞)时可能发生堆积(聚集)现象,则下列会直接受到堆积现象影响的是 A.存

2014年考研英语(一)阅读真题 第2篇 A Problem in America&#39;s Legal Profession

All around the world, lawyers generate(产生敌意 用) more hostility than the members of any other profession- with the possible exception of journalism. 整个世界范围内,律师比起其他任何职业的人员引起更多的敌意--可能除了新闻业人员. // ==> some parts of the world  all parts of the world  across