一、程序设计
1.编写一个函数实现十进制向二进制转换的功能,函数的输入为一个十进制数,输出为一个二进制数,如输入37,输出为100101
#include <stdio.h>
// 编写一个函数实现十进制向二进制转换的功能,函数的输入为一个十进制数,输出为一个二进制数,如输入37,输出为100101
void transfer(int num){
if(num>=2)
transfer(num/2);
printf("%d",num%2);
return;
}
int main(void) {
int num = 37;
transfer(num);
return 0;
}
2.请编写一个排序算法,实现对数字x[n]的排序,要求时间复杂度不高于O(nlogn)。
#include <stdio.h>
// 快速排序
int partition(int x[],int begin,int end){
int pivot = x[begin];
while (begin<end) {
while (begin<end&&x[end]>=pivot) end--;
x[begin] = x[end];
while (begin<end&&x[begin]<=pivot) begin++;
x[end] = x[begin];
}
x[begin] = pivot;
return begin;
}
void Qsort(int x[],int begin,int end){
if(begin<end){
int mid = partition(x,begin,end);
Qsort(x,begin, mid-1);
Qsort(x,mid+1,end);
}
}
int main(void) {
int x[5] = {
1,3,5,2,4};
Qsort(x,0,4);
for (int i=0;i<5;i++) {
printf("%d ",x[i]);
}
return 0;
}
二、操作系统
3.有周期性实时任务A和B:任务A执行时间为10ms,每20ms执行一次;任务B执行时间为25ms,每50ms执行一次。0时刻,A1和B1同时到达。各任务的截止时间是下次同类任务到达之前
(1)按照周期性任务的一般原则,请给出A3和B2的截止时间。
60和100
(2)请给出0时刻A1任务和B1任务的松弛度。
10和25
(3)按照最低松弛度优先算法,画出各任务的执行过程图。
4.假定一个进程中有三个线程P、Q和R,这三个线程都调用函数执行特定功能,之后更新一个全局(共享)变量count,如下图所示,请定义信号量并协调这三个进程按如下顺序执行:QS1早于PS1执行;PS1早于RS1执行;QS2晚于RS1执行;PS2和RS2晚于QS2执行。请定义合适的信号量或锁机制在P、Q和R中插入代码,实现上述执行顺序及对count的更新。
执行顺序如下,并且保持对count的互斥访问。
先定义全局变量
semaphore p1 = 0,p2 = 0,r1 = 0,r2 = 0,q2 = 0,mutex = 1;
P:
p(p1)
PS1()
v(r1)
p(p2)
PS2()
p(mutex)
count = count + 3
v(mutex)
Q
QS1()
v(p1)
p(q2)
QS2()
v(p2)
v(r2)
p(mutex)
count = count - 2
v(mutex)
R
p(r1)
RS1()
v(q2)
p(r2)
RS2()
p(mutex)
count = count + 5
v(mutex)
三、计算机网络
6.描述用户在浏览器输入www.sict.ac.cn后到页面在浏览器中显示经历的过程。
1、浏览器根据输入的域名进行DNS解析
2、根据解析到的IP地址访问对应的服务器
3、TCP3次握手建立连接
4、用户申请资源
5、在收到申请后,给用户分配资源
6、浏览器根据得到的资源进行解析和渲染
7、TCP4次挥手进行告别,断开连接
7.某公司在甲城市设总部,在乙城设分公司。总部有260台需要联网设备进行宽带上网,请回答以下问题:
(1)1个C段固定IP如何实现总部260台设备都能上网。需要加什么设备,实现什么功能?
(2)如果要实现总部260台与分公司20台设备都能互相访问,如果实现分公司和总部的网络规划,需要加什么设备,实现什么功能?
(3)总部260台设备,加上预留的50台空间,如果将这些设备地址都规划到一个局域网(LAN)中,局域网的地址、子网掩码该如何规划?
一个局域网中设备过多会带来什么问题,如何解决?
(4)一个局域网中设备过多会带来什么问题,如何解决?
(这题答案不太确定)
(1)需要加NAT(网络地址转换)
(3)一共310台设备,主机位数需要9位才能表示( 2 9 = 512 > 310 2^9 = 512>310 29=512>310)所以一共32位,前23位为子网号,后9位是主机号。子网掩码应该是255.255.254.0
(4)同一个冲突域中主机数太多,发生冲突的概率会增大,可以使用网桥或者交换机来隔离冲突域。