北京大学计算概论综合练习
【考研计算机专业课】2017年北京大学软件与微电子学院831试卷(计算机基础综合)

2017年北京大学软件与微电子学院831试卷(计算机基础综合)一.选择题:30*2=60分数据结构、操作系统、计算机网络各10道1.已知两个长度分别为m和n的升序链表,若将他们合并为一个长度为m+n的降序链表,则最坏情况下的时间复杂度为()A. O(n).B.O(m*n).C.O(min(m,n)).D.O(max(m,n))2.若一个链表最常用的操作是在末尾插入一个结点或删除最后一个结点,则选用()作为存储结构时间效率最高.A.单链表.B.带尾指针的单循环链表C.双向链表.D.带尾指针的双向循环链表3.一个栈的入栈顺序序列是ABCDE,则不可能的出栈序列是()A.ABCDE.B.EDCBA.C.DECBA.D.DCEAB4.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,则从队列中删除一个元素,再加入两个元素后,rear和front的值分别是多少()A.1和5.B.2和4C.4和2D.5和15.一棵完全二叉树共626个结点,则叶子结点的数目为()A.311.B.312.C.313.D.3146.一棵左子树为空的二叉树在先序线索化后,其中空的链域个数是()A.0.B.1.C.2.D.不确定7.设有向图G是具有10个顶点的强连通图,则G至少有()边A.45.B.90.C.10.D.98.下列关于关键路径的说法不正确的是()A.一个事件的最早开始时间和以该事件为尾的弧的最早开始时间相同B.所有的关键活动提前完成,整个工程才能提前完成C.关键活动一定位于关键路径上D.某些关键活动提前完成,整个工程将会提前完成9.在AVL树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,已知A的左孩子平衡因子为0,右孩子平衡因子为1,则应作()型调整使其平衡A.LL.B.LR.C.RL.D.RR10.若需要在O(nlog2n)的时间内对数组排序,且要求排序是稳定的,则可选择()A.快速排序.B.堆排序.C.归并排序.D.直接插入排序11.操作系统提供给程序员的接口是()A.进程.B.系统调用.C.库函数.D.系统调用和库函数12.关于特权指令,准确的是()A.可被操作系统内核使用B.可被系统管理员使用C.可被授权用户使用 .D.可在用户程序中使用13. 关于进程描述不准确的是()A.进程是在多道程序环境中完整的程序B.进程可以由程序、数据、进程控制块描述C.进程是一个程序在数据集合上的运行过程,是系统进行资源分配和调度的一个基本单位D.线程是一种特殊的进程14.用户程序执行时,使模式切换的原因不可能是()A.出现中断事件B.发生异常C.执行系统调用D.程序内跳转15. 管程中的条件变量,主要作用是()A.管理等待程序B.表示资源数量C.申请资源D.回收资源16. 关于信号,描述不准确的是()A.信号是进程通信机制B.信号是软件中断C.信号是进程同步机制D.信号可用于程序异常处理过程17.某系统内存容量4GB,页面大小4KB,采用反置页表,一个页表项需4B。
A.3-计算概论-计算机的组成与结构

计算机系统结构(Architecture) 计算机系统结构
从程序员角度观察到的计算机外特性, 从程序员角度观察到的计算机外特性 即概念 性结构和功能特性
计算机组成(Organization) 计算机组成
计算机系统结构的逻辑实现, 计算机系统结构的逻辑实现 研究计算机各组 成部分的构成和互联
计算机实现(Implementation) 计算机实现
●
CMOS:Complementary Metal Oxide Semiconductor,互补金属氧化物 : ,
半导体,是微机主板上的一块可读写的 半导体,是微机主板上的一块可读写的RAM芯 片,用来保存当前系统的 芯 硬件配置和用户对某些参数的设定。 硬件配置和用户对某些参数的设定。
主机箱内的主要部件
● ●
主 板 上 的
芯片组】 芯片组】
SATA, IDE,SCSI , ,
低速设备总线(LPC) 低速设备总线
芯片组】 【BIOS 芯片组】 ● 【键盘适配器、鼠标适配器、软驱适配器、… 键盘适配器、鼠标适配器、软驱适配器、
通用型总线【其它外设适配器 通用型总线【
USB (Universal Serial Bus) ● PCI,ISA ,
总线标准
ISA(Industrial Standard Architecture Bus): 位,EISA ( ):16位 ): 总线 PCI(Peripheral Component Interconnection Bus): ( ):32/64 ): 位 USB(Universal Serial Bus):由IBM、Intel及Microsoft等 ( ):由 ): 、 及 等 多家公司共同开发的新型外设连接技术
北大计算机专业考研题库

北大计算机专业考研题库
北大计算机专业考研题库涵盖了计算机科学与技术领域的多个重要知
识点,包括但不限于数据结构、计算机组成原理、操作系统、计算机
网络、软件工程等。
以下是一些模拟题目,供参考:
# 一、选择题
1. 在数据结构中,以下哪个算法的时间复杂度是O(n^2)?
A. 冒泡排序
B. 快速排序
C. 归并排序
D. 堆排序
2. 在计算机组成原理中,以下哪个部件不参与指令的执行?
A. CPU
B. 内存
C. 硬盘
D. I/O设备
# 二、简答题
1. 简述冯·诺依曼计算机体系结构的主要特点。
2. 解释操作系统中的死锁概念,并列举导致死锁的四个必要条件。
# 三、计算题
1. 给定一个具有n个元素的数组,编写一个函数来实现快速排序算法,并计算其平均时间复杂度。
# 四、编程题
1. 编写一个程序,实现单链表的反转,并输出反转后的链表。
# 五、论述题
1. 论述计算机网络中的TCP/IP协议栈,并解释各层的功能。
# 六、案例分析题
1. 假设你是一名软件工程师,你的团队正在开发一个大型在线多人游戏。
请分析可能遇到的性能瓶颈,并提出优化策略。
请注意,以上题目仅为示例,实际的考研题库会更加全面和深入,包
括更多的题型和知识点。
考生在准备考研时,应广泛阅读教材、参考
书和历年真题,以确保对各个知识点有充分的理解和掌握。
考研是一个系统性的过程,需要考生有计划地复习,不断练习和总结。
希望每位考生都能够取得理想的成绩,实现自己的学术目标。
祝所有考生考研顺利!。
2022年北京大学计算机科学与技术专业《计算机组成原理》科目期末试卷A(有答案)

2022年北京大学计算机科学与技术专业《计算机组成原理》科目期末试卷A(有答案)一、选择题1、若数据在存储器中采用以低字节地址为字地址的存放方式(小端存储),则十六进制数12345678H按自己地址由小到大依次存为()。
A.12345678B.87654321C.78563412D.341278562、有效容量为128KB的Cache,每块16B,8路组相联。
字节地址为1234567H的单元调入该Cache,其tag应为()。
A.1234HB.2468HC.048DHD.12345H3、浮点数加/减运算过程一般包括对阶、尾数运算、规格化、舍入和判断溢出等步骤。
设浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7位(均含两位符号位)。
若有两个数,即x=2×29/32,y=25×5/8,则用浮点数加法计算xty的最终结果是()。
A.001111100010B.001110100010C.010*********D.发生溢出4、4位机器内的数值代码,则它所表示的十进制真值可能为()。
I.16 Ⅱ.-1 Ⅲ.-8 V.8A. I、V、ⅢB.IⅡ、IⅣC.Ⅱ、Ⅲ、IVD.只有V5、常用的(n,k)海明码中,冗余位的位数为()。
A.n+kB.n-kC.nD.k6、假设某存储器总线采用同步通信方式,时钟频率为50MHz,每个总线事务以突发方式传输8个字,以支持块长为8个字的Cache行读和Cache行写,每字4B.对于读操作,方式顺序是1个时钟周期接收地址,3个时钟周期等待存储器读数,8个时钟周期用于传输8个字。
请问若全部访问都为读操作,该存储器的数据传输速率为()。
A.114.3MB/sB.126.0MB/sC.133.3MB/sD.144.3MB/s7、下列关于多总线结构的叙述中,错误的是()。
A.靠近CPU的总线速度较快B.存储器总线可支持突发传送方式C.总线之间需通过桥接器相连D.PCI-Expressx16采用并行传输方式8、已知计算机A的时钟频率为800MHz,假定某程序在计算机A上运行需要12s。
计算概论2009期末考试试题

北京大学信息科学技术学院考试试卷(计算概论B 城市与环境学院)考试科目:姓名:学号:考试时间:年月日任课教师:以下为试题和答题纸,共9 页。
一、选择题(每题2分,共30分)1.下列符号中属于非法的自定义标识符的是A. alf_numB. _lineC. MAX_11D. float2. 在C语言中,逻辑值“真”用表示。
A. 大于0的数B. 非0的数C. 非0整数D. 小于0的数3.语句while(!E);中的条件!E等价于()。
A. E = = 0B. E!=1C. E!=0D. ~E4.对于switch语句下列错误的说法是()A. case和default的次序不影响程序的执行结果;B. 多个case可以共用一组语句;C. case后面可以是变量;D. switch后面的括号内可以使用表达式。
5.属于静态存储方式的变量是().A.寄存器变量B.函数的形参变量C. static局部变量D.自动变量6. 选出年龄age在30到40(包括30,不包括40)之间的人,其C语言表达式应为()A. (age>=30) and (age<40)B. (40>age>=30)C. (age>=30)&(age<40)D. (age>=30)&&(age<40)7.数组名作为实参数传递给函数时,数组名被处理为()。
A. 该数组的长度B. 该数组的元素个数C. 该数组的首地址D. 该数组中各元素的值8.下面的选项中正确的赋值语句是(char a[5],*p=a;)()。
A. p=“abcd”;B. a=“abcd”;C. *p=“abcd”;D. *a=“abcd”; 9.两个指针变量不可以( )。
A. 相加B. 比较C. 相减D. 指向同一地址10.若有以下程序段,则值为6的表达式是()。
struct st{int n;struct st *next;};static struct st a[3] = {5,&a[1],7,&a[2],9,‘\0’}, *p;p = &a[0];A. p++->nB. p->n++C. (*p).n++D. ++p->n11.以下程序的输出结果是()。
北大计概练习

约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。
就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。
#include<stdio.h>#include<math.h>#define max 20int main(){intsz[max][2];inti,n,m;for(i=0;i<max;i++){scanf("%d %d",&sz[i][0],&sz[i][1]);n=sz[i][0];m=sz[i][1];if(m==0&&n==0){break;}}inta,b;for(a=0;a<i;a++){int p=sz[a][0];int q=sz[a][1];int result=0;for(b=2;b<=p;b++){result=(result+q)%b;}printf("%d\n",result+1);}}问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。
求胜利者的编号。
我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n 的人开始): k k+1 k+2 ... n-2, n-1, 0, 1, 2, ... k-2并且从k开始报0。
现在我们把他们的编号做一下转换:k --> 0k+1 --> 1k+2 --> 2......k-2 --> n-2变换后就完完全全成为了(n-1)个人报数的子问题,假如我们知道这个子问题的解:例如x是最终的胜利者,那么根据上面这个表把这个x变回去不刚好就是n个人情况的解吗?变回去的公式很简单:x'=(x+k)%n如何知道(n-1)个人报数的问题的解?显然,只要知道(n-2)个人的解就行了。
计算机概论A—Coursera—北京大学

第一次在线提交作业=====第1题:1:晶晶赴约会=====总时间限制:1000ms内存限制:65536kB描述晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES;如果不能则输出NO。
输入输入有一行,贝贝邀请晶晶去看展览的日期,用数字1到7表示从星期一到星期日。
输出输出有一行,如果晶晶可以接受贝贝的邀请,输出YES,否则,输出NO。
注意YES和NO都是大写字母!样例输入2样例输出YESCode:#include <iostream>using namespace std;int main(){int week;cin >> week;if(week == 1 || week == 3 || week == 5){cout << "NO" <<endl;}else{cout << "YES" <<endl;}return 0;}=====第2题:2:奇数求和=====总时间限制:内存限制:65536kB描述计算正整数m 到n(包括m 和n )之间的所有奇数的和,其中,m 不大于n,且n 不大于300。
例如m=3, n=12, 其和则为:3+5+7+9+11=35输入两个数m 和n,两个数以空格间隔,其中0<=m <= n <= 300 。
输出奇数之和样例输入7 15样例输出55Code:#include <iostream>using namespace std;int main(){int m, n, total = 0;cin >> m >> n;for(int i = m; i <= n; i++){if(i % 2 == 1)total += i;}cout << total << endl;return 0;}=====第3题:3:整数的个数=====总时间限制:1000ms内存限制:65536kB描述给定k(1<k<100)个正整数,其中每个数都是大于等于1,小于等于10的数。
最新计算概论(北大期末复习资料:计概复习幻灯片课件

#define JINGDU 0.00001 #include <stdio.h> int main(){
x1 = 1 xn+1 = (xn + a/xn)/2
double a, x2, x1;
scanf(“%lf”, &a);
x1 = 1;
x2 = (x1+a/x1)/2;
while(x2-x1 > JINGDU || x1-x2 > JINGDU){
长短。 (3)控制完成洗衣时信号提示。
全自动洗衣机的控制方案
1. 打开总开关,设置水位(高/中/低)且水位灯亮, 设置洗涤方式(轻柔/标准/强劲)且对应洗涤灯亮, 设置漂洗次数(2/3/4)且对应漂洗灯亮。
2. 按下启动/暂停键,开始进水,进水灯亮,水到 设定水位停止进水,进水灯灭,延时2S后,开始洗涤。
称:这两个字符串相等,
“字符串复制”函数
strcpy(目标字符串, 源字符串);
功能:把 源字符串 赋值给 目标字符串
int main(){ char zfc_src[50], zfc_tgt[50]; gets(zfc_src); strcpy(zfc_tgt, zfc_src); printf(“%s\n”, zfc_tgt); return 0;
用 冒泡法 对 数组 int sz[LEN] 进行排序
int e;
for(int k = 1 ; k <= LEN ; k++){
for(int i = 0; i < LEN - k; i++){
if(sz[i] > sz[i+1]){
e = sz[i+1];
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目- 求序列中的众数
来源BatmanFly(ZHAO Xin)
描述
输入一个长度为N的整数序列(不多于128个整数),每个整数的范围在[-10^52,10^52],计算这个序列的众数。
众数是指出现次数最多的那个数。
如果有多个数出现的次数都达到最多,则取在原序列最先出现的数为众数;如果所有的数都相等,则返回"no"。
关于输入
第一行为序列长度N。
然后是N个数据,每一个数的范围都是在[-10^52,10^52]。
注意,这N个数之间可能有若干个空行隔开。
注意,输入数据可能有一些冗余表达信息,具体来说:
1)正数和0前面可能有前导0和'+'符号,例如
+000123=123
+0000=0
-0000=0
2)每个数字中不含有空格和其他非数字字符,例如不会出现"100 0"或者"- 100"。
3)每个数字前面至多有一个符号,即不会出现+(-1)、-(+4)和-(-1)等情况。
关于输出
输出只有1 行:
该序列的众数或者”no”。
如果有多个数出现的次数都达到最多,则取最先出现的数为众数,并且输出形式应该最简形式。
例如,如果原序列众数为+000123,则输出123;如果原序列众数为+0000或者-0000或者0000,输出0。
负数正常输出,例如:如果原序列众数为-000000001111,就输出-1111。
例子输入
6
-00001
10000
00011111111111111111111111111111111111
-01
+000000011111111111111111111111111111111111
-00000000000001
例子输出
-1
提示
-1出现3次
告诉你们多少次了数组开大点!!!!!By 脸哥
题目- 寻找山顶
描述
在一个m×n的山地上,已知每个地块的平均高程,请求出所有山顶所在的地块(所谓山顶,就是其地块平均高程不比其上下左右相邻的四个地块每个地块的平均高程小的地方)。
关于输入
第一行是两个整数,表示山地的长m(5≤m≤20)和宽n(5≤n≤20)。
其后m行为一个m×n的整数矩阵,表示每个地块的平均高程。
每行的整数间用一个空格分隔。
关于输出
输出所有山顶所在地块的位置。
每行一个。
按先m值从小到大,再n值从小到大的顺序输出。
例子输入
0 76 81 34 66
1 13 58 4 40 5 24 17 6 65 13 13 76 3 20 8 36 1
2 60 37 42 5
3 87 10 65 42 25 47 41 33 71 69 9
4 24 12 92 11 71 3 82 91 90 20 9
5 44 例子输出
0 2
0 4
2 1
2 4
3 0
3 2
4 3
5 2
5 4
8 0
8 4
9 3
题目- 习题(15-11) 放苹果问题
描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法(用K表示)?注意:5,1,1和1,5,1是同一种分发。
关于输入
第一行是测试数据的数目t(0<= t <= 20),其后的t行均包含两个整数M和N,以空格分开。
1<= M, N<= 10
关于输出
对输入的每组数据M和N,用一行输出相应的K
例子输入
1
7 3
例子输出
8
提示
所有不同的摆放方法可以分为两类:至少有一个盘子空着和所有盘子有不空。
分别计算着两类摆放方法的数目,然后把它们加起来。
对于至少空着一个盘子的情况,这N个盘子摆放M个苹果的摆放方法数目与N-1个盘子摆放M个苹果的摆放方法数目相等。
对于所有盘子都不空的情况,这N个盘子摆放M个苹果的摆放方法数目等于N个盘子拜访M-N个苹果的摆放方法数目。
采用递归思想解题。
题目- 和为n连续正数序列
描述
输入一个正数n( n <= 30 ),输出所有和为n连续正数序列。
关于输入
一个正数n ( 0 < n <= 30 );
关于输出
输出所有和为n连续正数序列。
每个序列里的数字以空格分隔。
如果找不到连续序列,输出NO。
例子输入
15
例子输出
1 2 3 4 5
4 5 6
7 8
提示
注意:序列至少要有两个数字
题目- 例题(15.5) 算24 (1103)
描述
给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。
现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。
这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。
比如,对于5,5,5,1,我们知道5 * (5 ? 1 / 5) = 24,因此可以得到24。
又比如,对于1,1,4,2,我们怎么都不能得到24。
关于输入
输入数据包括多行,每行给出一组测试数据,包括4个小于10个正整数。
最后一组测试数据中包括4个0,表示输入的结束,这组数据不用处理。
关于输出
对于每一组测试数据,输出一行,如果可以得到24,输出“YES”;否则,输出“NO”。
例子输入
5 5 5 1
1 1 4 2
0 0 0 0
例子输出
YES
NO
提示
2787
题目- 1140 最短前缀
来源2797
描述
一个字符串的前缀是从该字符串的第一个字符起始的一个子串。
例如"carbon"的字串是: "c", "ca", "car", "carb", "carbo", 和"carbon"。
注意到这里我们不认为空串是字串, 但是每个非空串是它自身的字串. 我们现在希望能用前缀来缩略的表示单词。
例如, "carbohydrate" 通常用"carb"来缩略表示. 现在给你一组单词, 要求你找到唯一标识每个单词的最短前缀
在下面的例子中,"carbohydrate" 能被缩略成"carboh", 但是不能被缩略成"carbo" (或其余更短的前缀) 因为已经有一个单词用"carbo"开始
一个精确匹配会覆盖一个前缀匹配,例如,前缀"car"精确匹配单词"car". 因此"car" 是"car"的缩略语是没有二义性的, “car”不会被当成"carriage"或者任何在列表中以"car"开始的单词.
关于输入
输入包括至少2行,至多1000行. 每行包括一个以小写字母组成的单词,单词长度至少是1,至多是20.
关于输出
输出的行数与输入的行数相同。
每行输出由相应行输入的单词开始,后面跟着一个空格接下来是相应单词的没有二义性的最短前缀标识符。
例子输入
carbohydrate
cart
carburetor
caramel
caribou
carbonic
cartilage
carbon
carriage
carton
car
carbonate
例子输出
carbohydrate carboh
cart cart
carburetor carbu
caramel cara
caribou cari
carbonic carboni cartilage carti carbon carbon carriage carr carton carto
car car carbonate carbona。