在单处理器系统中,如果同时存在有12个进程,则处于就绪队列中的进程数量最多为()
A. 1
B. 9
C. 10
D. 11
答案:D
以下关于多线程的叙述中错误的是()
A. 线程同步的方法包括使用临界区,互斥量,信号量等
B. 两个线程同时对简单类型全局变量进行写操作也需要互斥
C. 实现可重入函数时,对自动变量也要用互斥量加以保护
D. 可重入函数不可以调用不可重入函数
答案:C
系统死锁的可能的原因是()
A. 进程死循环
B. 资源循环等待
C. 程序内存访问越界
D. 进程释放资源
答案:B
整数0x12345678,在采用bigendian中内存的排序序列是( )
A. 12 34 56 78
B. 78 56 34 12
C. 87 65 43 21
D. 21 43 65 87
答案:A
使用C语言将一个1G字节的字符数组从头到尾全部设置为字’A’,在一台典型的当代PC上,需要花费的CPU时间的数量级最接近()
A. 0.001秒
B. 1秒
C. 100秒
D. 2小时
答案:B
对于普通的计算机,对以下事件的平均耗时从小到大排序为____:
A.读取1KB内存数据
B.从硬盘连续读取1KB数据
C.读取一次L2缓存
D.一次磁盘寻道
A. C,A,D,B
B. C,D,A,B
C. D,C,A,B
D. D,A,C,B
答案:A
分页式虚拟存储管理系统中,页面的大小与可能产生的缺页中断次数( )
A. 成正比
B. 成反比
C. 无关
D. 成固定值
答案:C
关于子进程和父进程的说法,下面哪一个是正确的()
A. 一个父进程可以创建若干个子进程,一个子进程可以从属于若干个父进程
B. 父进程被撤销时,其所有子进程也被相应撤消
C. 子进程被撤销时,其从属的父进程也被撤销
D. 一个进程可以没有父进程或子进程
答案:D
关于线程和进程,下面说法正确的是()
A. 终止一个进程比终止一个线程花费的时间少
B. 进程切换比同一进程内部的线程切换花费的时间少
C. 线程提高了不同执行程序间的通信效率
D. 进程和线程都是资源分配和调度的基本单位
答案:C
进程调度时,下列进程状态的变化过程哪一项是不可能发生的()
A. 阻塞挂起->阻塞
B. 就绪挂起->就绪
C. 就绪挂起->阻塞挂起
D. 阻塞挂起->就绪挂起
答案:C
分解因数
题目描述:所谓因子分解,就是把给定的正整数a,分解成若干个素数的乘积,即 a = a1 × a2 × a3 × ... × an,并且 1 < a1 ≤ a2 ≤ a3 ≤ ... ≤ an。其中a1、a2、...、an均 为素数。 先给出一个整数a,请输出分解后的因子。
输入描述:输入包含多组数据,每组数据包含一个正整数a(2≤a≤1000000)。
输出描述:对应每组数据,以“a = a1 * a2 * a3...”的形式输出因式分解后的结果。
public class Main49 { //分解因数 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while (scanner.hasNextInt()){ int a=scanner.nextInt(); List<String> factors=factorization(a); System.out.printf("%d = %s\n",a,String.join(" * ",factors)); } } private static List<String > factorization(int a){ List<String > ans=new ArrayList<>(); for (int i = 2; a>1 && i*i <= a; i++) { while (a %i ==0){ ans.add(String.valueOf(i)); a=a/i; } } if (a>1){ ans.add(String.valueOf(a)); } return ans; } }
美国节日
题目描述:和中国的节日不同,美国的节假日通常是选择某个月的第几个星期几这种形式,因此每一年的放假日期都不相同。具体规则如下:
* 1月1日:元旦
* 1月的第三个星期一:马丁·路德·金纪念日
* 2月的第三个星期一:总统节
* 5月的最后一个星期一:阵亡将士纪念日
* 7月4日:美国国庆
* 9月的第一个星期一:劳动节
* 11月的第四个星期四:感恩节
* 12月25日:圣诞节 现在给出一个年份,请你帮忙生成当年节日的日期。 输入描述:输入包含多组数据,每组数据包含一个正整数year(2000≤year≤9999)。
输出描述:对应每一组数据,以“YYYY-MM-DD”格式输出当年所有的节日日期,每个日期占一行。
每组数据之后输出一个空行作为分隔。
public class Main50 { //判断是否为闰年 private static boolean isLeepYear(int y){ return (y % 400==0) || (y%4==0 && y %100 !=0); } //传入 y,m,d,找到从公元1年12月31日开始过了多久,求出它的MOD 7的同余数 private static int diff(int y,int m ,int d){ return (y-1)+(y-1)/4-(y-1)/100+(y-1)/400+nDays(y,m,d); } //根据1 日星期w,求第n 个星期e是几号 private static int m1(int w,int n ,int e){ return 1+(n-1)*7+(7-w+e)%7; } //根据6月1日星期w,求5月的最后一个星期一 private static int m2(int w){ int d=(w==1 ? 7:w-1); return 32-d; } //根据y,m,d求出星期几 private static int week(int y,int m ,int d){ int w=diff(y,m,d)%7; if (w==0){ w=7; } return w; } private static final int[] DAYS={31,28,31,30,31,30,31,31,30,31,30,31}; //给定y,m,d 返回这年过了多少天 private static int nDays(int y,int m,int d){ //m : 12 //[0 ,10] int n=d; for (int i = 0; i < m-1; i++) { n +=DAYS[i]; } if (m >2 && isLeepYear(y)){ n++; } return n; } public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while (scanner.hasNextInt()){ int y= scanner.nextInt(); System.out.printf("%d-01-01\n",y); int w; w=week(y,1,1); System.out.printf("%d-01-%02d\n",y,m1(w,3,1)); w=week(y,2,1); System.out.printf("%d-02-%02d\n",y,m1(w,3,1)); w=week(y,6,1); System.out.printf("%d-05-%02d\n",y,m2(w)); System.out.printf("%d-07-04\n",y); w=week(y,9,1); System.out.printf("%d-09-%02d\n",y,m1(w,1,1)); w=week(y,11,1); System.out.printf("%d-11-%02d\n",y,m1(w,4,4)); System.out.printf("%d-12-25",y); System.out.println(); } } }