Java面向对象编程

发布于:2023-09-22 ⋅ 阅读:(182) ⋅ 点赞:(0)

在单处理器系统中,如果同时存在有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,找到从公元11231日开始过了多久,求出它的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;

    }



    //根据61日星期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();

        }



    }

}

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到