处于运行状态的操作系统程序应放在()
A. 寄存器中
B. 主存中
C. 辅存中
答案:B
在系统内存中设置磁盘缓冲区的主要目的是()
A. 减少磁盘 I/O 次数
B. 减少平均寻道时间
C. 提高磁盘数据可靠性
D. 实现设备无关性
答案:A
下列选项中,会导致进程从执行态变为就绪态的事件是()
A. 执行 P(wait)操作
B. 申请内存失败
C. 启动 I/O 设备
D. 被高优先级进程抢占
答案:D
下面哪一种表述不属于操作系统的主要功能?()
A. 处理机管理
B. 存储器管理
C. 设备管理和文件管理
D. 可移植
答案:D
在现代操作系统中采用缓冲技术的主要目的是()。
A. 改善用户编程环境
B. 提高CPU的处理速度
C. 提高CPU和设备之间的并行程度
D. 实现与设备无关性
答案:C
进程和程序的一个本质区别是()。
A. 前者为动态的,后者为静态的
B. 前者存储在内存,后者存储在外存
C. 前者在一个文件中,后者在多个文件中
D. 前者分时使用CPU,后者独占CPU
答案:A
一个进程的读磁盘操作完成后,操作系统针对该进程必做的是 ()
A. 修改进程状态为就绪态
B. 降低进程优先级
C. .进程分配用户内存空间
D. 增加进程的时间片大小
答案:A
选择在最近的过去很久未访问的页面予以淘汰的算法称为()。
A. Opt.
B. LRU
C. MFU
D. LFU
答案:B
并发进程之间()。
A. 彼此无关
B. 必须同步
C. 必须互斥
D. 可能需要同步或互斥
答案:D
一次I/O操作的结束,有可能导致()。
A. 一个进程由睡眠变就绪
B. 几个进程由睡眠变就绪
C. 一个进程由睡眠变运行
D. 几个进程由睡眠变运行
答案:A
淘宝网店
题目描述:NowCoder在淘宝上开了一家网店。他发现在月份为素数的时候,当月每天能赚1元;否则每天能赚2元。
现在给你一段时间区间,请你帮他计算总收益有多少。
输入描述:输入包含多组数据。
每组数据包含两个日期from和to (2000-01-01 ≤ from ≤ to ≤ 2999-12-31)。
日期用三个正整数表示,用空格隔开:year month day。 输出描述:对应每一组数据,
输出在给定的日期范围(包含开始和结束日期)内能赚多少钱。
public class Main51 { //淘宝网店 public static void main(String[] args) { int year1,month1,day1,year2,month2,day2; int profit=0; Scanner scanner=new Scanner(System.in); while (scanner.hasNextInt()){ year1=scanner.nextInt(); month1=scanner.nextInt(); day1=scanner.nextInt(); year2=scanner.nextInt(); month2=scanner.nextInt(); day2=scanner.nextInt(); profit=profitofYear(year1)-profitofThisYear(year1,month1,day1-1); profit +=profitofThisYear(year2,month2,day2); if (year1==year2){ profit -=profitofYear(year1); } for (int i = year1+1; i < year2; i++) { profit +=profitofYear(i); } System.out.println(profit); } } private static boolean isLeapYear(int year){ return (year % 400==0) || (year %4==0 && year %100 !=0); } private static int profitofYear(int year){ return 2*31+1*28+1*31+2*30+1*31+2*30+1*31+2*31+ 2*30+2*31+1*30+2*31+(isLeapYear(year) ?1:0); } private static boolean isPrime(int month){ return month==2 || month==3|| month==5 ||month==7 ||month==11; } private static int profitofThisYear(int year,int month,int day){ int profit=0; if ( !isPrime(month)){ profit=day*2; }else { profit=day; } while (--month >0){ switch (month){ case 1: case 8: case 10: case 12: profit +=62; break; case 3: case 5: case 7: profit +=31; break; case 4: case 6: case 9: profit +=60; break; case 11: profit +=30; break; default: //case 2 profit += (28 + (isLeapYear(year) ? 1 : 0)); break; } } return profit; } }
斐波那契凤尾
题目描述:NowCoder号称自己已经记住了1-100000之间所有的斐波那契数。
为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。当然,斐波那契数会很大。因此,如果第n个斐波那契数不到6位,则说出该数;否则只说出最后 6位。
输入描述:输入有多组数据。 每组数据一行,包含一个整数n (1≤n≤100000)。
输出描述:对应每一组输入,输出第n个斐波那契数的最后6位。
public class Main52 { // 斐波那契凤尾 public static void main(String[] args) { int border=-1; long[] ans=new long[100000]; ans[0]=1; ans[1]=2; for (int i = 2; i < 100000; i++) { long next=ans[i-1]+ans[i-2]; if (border==-1 && next >=1000000){ border =i+1; } ans[i]=next % 1000000; } Scanner scanner=new Scanner(System.in); while (scanner.hasNextInt()){ int n=scanner.nextInt(); long f=ans[n-1]; if (n <border){ System.out.printf("%d\n",f); }else { System.out.printf("%06d\n",f); } } } }