时光从轮回中流逝,却在转化中沉淀,一如在岁月中的拼搏,终沉淀于生命中。
一、选择题
1、系统中内存不足程序所需大小,程序就无法执行。
A、错
B、对
答案: A。 分析:操作系统存在虚拟内存,可以把优先级较低的程序报保存在系统硬盘中。
2、有一个程序中有A,B,C三个线程同时对一个文件进行读写操作,其中的A,B是写进程只负责往里面写数据,C是读线程,同时把读取的数据从文件中删除,A线程单独写满文件需要10个小时,B单独写程序需要6小时,C线程需要15小时才能读取完整个文件,不考虑三个线程之间的相互影响的情况下现在小时才能写满文件
A.5
B.6
C.5.5
D.4.5
E.4.8
F.5.3
答案:A。分析不考虑三个线程之间的相互影响。总任务是单位1,A的写工作效率是1/10,B的写工作效率是1/6,C的读工作效率是1/15,那么总工作效率是1/10+1/6-1/15结果是1/5。于是,写满的总时间是:用单位1除以总工作效率五分之一,就是5小时。
3、计算机操作系统的主要功能是()
A、把高级程序设计语言和汇编语言编写的程序翻译到计算机硬件可以直接执行的目标程序,为用户提供良好的软件开发环境
B、管理计算机系统的软硬件资源,以充分发挥计算机资源的效率,并为其它软件提供良好的运行环境
C、为用户提供方便地操作和使用计算机
D、对各类计算机文件进行有效的管理,并提交计算机硬件高效处理
答案:B。
4、若系统中只有用户级线程,则处理机调度单位是()。
A.线程
B.进程
C.程序
D.作业
答案:B。分析:如果系统只有用户态线程,则线程对操作系统是不可见的,操作系统只能调度进程;
如果系统中有内核态线程,则操作系统可以按线程进行调度;
5、设两个进程共用一个临界资源的互斥信号量mutex=1,当mutex=-1时表示()
A、没有一个进程进入临界区
B、一个进程进入了临界区,另一个进程等待
C、两个进程都在等待
D、两个进程都进入临界区
答案:A。分析:互斥信号量,初始值为1,取值范围为(-1, 0,1)。
当信号量为1时,表示两个进程皆未进入需要互斥的临界区;
当信号量为0时,表示有一个进程进入临界区运行,另一个必须等待;
当信号量为-1时,表示有一个进程正在临界区运行,另一个进程因等待而阻塞在信号量队列中,需要当前已在临界区运行的进程退出时唤醒。
二、编程题
1、美国节日
难点:知道每一天是星期几。
代码示例:
usingnamespacestd; // 根据 年-月-日 通过蔡勒公式计算当前星期几intday_of_week(intyear, intmonth, intday) { if (month==1||month==2) { month+=12; year-=1; } intcentury=year/100; year%=100; intweek=century/4-2*century+year+year/4+ (13* (month+1)) /5+day-1; week= (week%7+7) %7; if (week==0) { week=7; } returnweek; } // 给定年月和第几周的星期几,求出是该月的几号几号intday_of_demand(intyear, intmonth, intcount, intd_of_week) { intweek=day_of_week(year, month, 1);// 计算该月1号是星期几// 1 + 7(n - 1) + (所求星期数 + 7 - 1号星期数) % 7intday=1+ (count-1) *7+ (7+d_of_week-week) %7; returnday; } // 元旦voidnew_year_day(intyear) { printf("%d-01-01\n", year); } // 马丁·路德·金纪念日(1月的第三个星期一)voidmartin_luther_king_day(intyear) { printf("%d-01-%02d\n", year, day_of_demand(year, 1, 3, 1)); } // 总统日(2月的第三个星期一)voidpresident_day(intyear) { printf("%d-02-%02d\n", year, day_of_demand(year, 2, 3, 1)); } // 阵亡将士纪念日(5月的最后一个星期一)voidmemorial_day(intyear) { // 从 6 月往前数intweek=day_of_week(year, 6, 1); // 星期一的话,从 31 号往前数 6 天,否则,数 week - 2 天intday=31- ((week==1) ?6 : (week-2)); printf("%d-05-%02d\n", year, day); } // 国庆voidindependence_day(intyear) { printf("%d-07-04\n", year); } // 劳动节(9月的第一个星期一)voidlabor_day(intyear) { printf("%d-09-%02d\n", year, day_of_demand(year, 9, 1, 1)); } // 感恩节(11月的第四个星期四)voidthanks_giving_day(intyear) { printf("%d-11-%02d\n", year, day_of_demand(year, 11, 4, 4)); } // 圣诞节voidchristmas(intyear) { printf("%d-12-25\n\n", year); } // 美国节日voidholiday_of_usa(intyear) { new_year_day(year); martin_luther_king_day(year); president_day(year); memorial_day(year); independence_day(year); labor_day(year); thanks_giving_day(year); christmas(year); } intmain() { intyear; while (cin>>year) { holiday_of_usa(year); } return0; }
2、分解因数
代码示例:
usingnamespacestd; intmain() { intn, i; while (cin>>n) { printf("%d = ", n); for (inti=2; i<=sqrt(n); i++) { while (n!=i) { if (n%i==0) { printf("%d * ", i); n/=i; } elsebreak; } } printf("%d\n", n); } return0; }
总结
本文总共讲了5题牛客高频的选择题,以及两道牛客编程题,希望大家读后能够有所收获!