1. 程式人生 > >CCF認證java模擬試題(附加答案)

CCF認證java模擬試題(附加答案)

模擬練習試題參考答案(Java)

為了幫助大家熟悉CCF 軟體能力認證考試的操作方式與答題環境,瞭解試題的大致難度,做好考前的準備,故在此提供試題的參考答案。Java程式是靈活的,為了解決同一個問題,即使結果相同,程式的內容也不一定是完全一致的,僅供各位在練習時參考。

1. 出現次數最多的數

import java.util.*;

public class Main {   public static void main(String[] args){     new Main().run();

 }

 public void run() {

   Scanner fin = new Scanner(System.in);

   int N = fin.nextInt();     int[]count = new int[10001];     for (int i =0; i < N; ++i) {

      ++count[fin.nextInt()];

   }

   int maxCount = -1;     int result= 0;     for (int i = 1; i <= 10000;++i) {       if (count[i] > maxCount){         maxCount = count[i];         result = i;

      }

   }

   System.out.println(result);

 }

}

2.ISBN號碼

import java.io.BufferedReader; import java.io.InputStreamReader;public class Main {    public static void main(String args[]) {

                 BufferedReader bin = newBufferedReader(new InputStreamReader(System.in));              try{

                         int sum=0;char cc='0';                  Stringisbn_0 = bin.readLine();

                         String isbn =isbn_0.replace("-", "");

                         for(int i=0; i<9; i++){                               intii = (int)isbn.charAt(i)-48;                            sum += ii * (i+1);

                         }

                         sum = sum % 11;

                         if(sum == 10) cc = 'X';//                          elsecc = (char)(sum+48);                 if(cc == isbn.charAt(9))System.out.println("Right");

                         else{

                                 isbn_0 = isbn_0.substring(0,12) + cc;

                                  System.out.println(isbn_0);

                         }

                  }catch(Exception e){

                         e.printStackTrace();

                 }

         }

}

3.最大的矩形

import java.util.*;

public class Main {   publicstatic void main(String[] args) {     newMain().run();

 }

 public void run() {

   Scanner fin = new Scanner(System.in);

    int N =fin.nextInt();     int[] height = newint[N];     for (int i = 0; i < N;++i) height[i] = fin.nextInt();

    int result = 0;     for (int i = 0; i < N; ++i) {       int width = 1;

      for (int j = i - 1; j>= 0; --j) {         if (height[j]< height[i]) break;        ++width;       }

      for (int j = i + 1; j< N; ++j) {         if (height[j] <height[i]) break;         ++width;       }      int area = width * height[i];       result = Math.max(result, area);

   }

   System.out.println(result);

 }

}

4.有趣的數

import java.util.*;

public class Main {   publicstatic void main(String[] args) {     newMain().run();

 }

 public void run() {

   Scanner fin = new Scanner(System.in);

    int N =fin.nextInt();     long[] count = newlong[8];     count[6] = 0;     count[7] = 1;     long mod = 1000000007;     for (int i = 2; i <= N; ++i) {       long[] newCount = new long[8];       newCount[0] = (count[0] * 2 + count[1] +count[3]) % mod;       newCount[1] =(count[1] * 2 + count[2] + count[5]) % mod;       newCount[2] = (count[2] + count[6]) %mod;       newCount[3] = (count[3] * 2 +count[4] + count[5]) % mod;      newCount[4] = (count[4] + count[7]) % mod;       newCount[5] = (count[5] * 2 + count[6] +count[7]) % mod;       newCount[6] =0;       newCount[7] = 1;

     count = newCount;

   }

   System.out.println(count[0]);

 }

}

5.I’m stuck!

import java.util.*;

public class Main {   publicstatic void main(String[] args) {     newMain().run();

 }

 public void run() {

   Scanner fin = new Scanner(System.in);

    int R = fin.nextInt();     int C = fin.nextInt();     fin.nextLine();     int[][] board = new int[R + 2][C +2];     int rowStart = 0, colStart = 0,rowEnd = 0, colEnd = 0;     for (int i =1; i <= R; ++i) {       String line =fin.nextLine();       for (int j = 1; j<= C; ++j) {         char c =line.charAt(j - 1);         switch (c) {

          case '#':break;           case '-': board[i][j] =5; break;           case '|': board[i][j]= 0xA; break;           case '+':           case 'S':           case 'T':

                   board[i][j] = 0xF; break;          case '.': board[i][j] = 0x8; break;           default: break;

        }

        if (c == 'S') {           rowStart = i;           colStart = j;         } else if (c == 'T') {           rowEnd = i;           colEnd = j;

        }

     }

   }

    int[] dr = new int[] {0,-1, 0, 1};     int[] dc = new int[] {1,0, -1, 0};

    // Scan 1: find all cellswhich can reach T     boolean[][] visited= new boolean[R + 2][C + 2];     boolean[][]canReachT = new boolean[R + 2][C + 2];    initVisited(visited);    canReachT[rowEnd][colEnd] = true;    visited[rowEnd][colEnd] = true;

    Queue<Integer> queue= new LinkedList<Integer>();    queue.add(rowEnd);    queue.add(colEnd);     while(!queue.isEmpty()) {       int r =queue.remove();       int c =queue.remove();

      for (int i = 0; i < 4; ++i) {         int nr = r + dr[i];

        int nc = c +dc[i];         if (visited[nr][nc])continue;         if ((board[nr][nc]& (1 << ((i + 2) % 4))) != 0) {           canReachT[nr][nc] = true;           queue.add(nr);           queue.add(nc);           visited[nr][nc] = true;

        }

     }

   }

   /*

    for (int i = 1; i <= R;++i) {       for (int j = 1; j <= C;++j) {         if (canReachT[i][j]) {

          System.out.println("i = " +i + ", j = " + j);

        }

     }

    }     */

    if(!canReachT[rowStart][colStart]) {      System.out.println("I'm stuck!");       return;

   }

    // Scan 2: get result     boolean[][] rCanReach = new boolean[R +2][C + 2];     initVisited(visited);     queue.clear();     visited[rowStart][colStart] = true;     rCanReach[rowStart][colStart] = true;     queue.add(rowStart);     queue.add(colStart);

    while (!queue.isEmpty()){       int r = queue.remove();       int c = queue.remove();

      for (int i = 0; i <4; ++i) {         if ((board[r][c] &(1 << i)) == 0) continue;        int nr = r + dr[i];         int nc= c + dc[i];         if (visited[nr][nc])continue;         if (board[nr][nc] == 0)continue;

        rCanReach[nr][nc] =true;         queue.add(nr);         queue.add(nc);         visited[nr][nc] = true;

     }

   }

    int result = 0;     for (int i = 1; i <= R; ++i) {       for (int j = 1; j <= C; ++j) {

        /*         if (rCanReach[i][j]) {

          System.out.println("i = " +i + ", j = " + j);

        }         */         if (rCanReach[i][j] &&(!canReachT[i][j])) ++result;

     }

   }

   System.out.println(result);

 }

  private voidinitVisited(boolean[][] visited) {    int R = visited.length - 2;    int C = visited[0].length - 2;    for (int i = 0; i <= R + 1; ++i) {       visited[i][0] = true;       visited[i][C + 1] = true;

   }

    for (int j = 0; j <= C+ 1; ++j) {       visited[0][j] =true;       visited[R + 1][j] = true;

   }

    for (int i = 1; i <= R; ++i) {       for (int j = 1; j <= C; ++j) {         visited[i][j] = false;

     }

   }

 }

相關推薦

CCF認證java模擬試題附加答案

模擬練習試題參考答案(Java) 為了幫助大家熟悉CCF 軟體能力認證考試的操作方式與答題環境,瞭解試題的大致難度,做好考前的準備,故在此提供試題的參考答案。Java程式是靈活的,為了解決同一個問題,即使結果相同,程式的內容也不一定是完全一致的,僅供各位在練習時參考。 1

Java常見面試題答案

第一,談談final, finally, finalize的區別。 final?修飾符(關鍵字)如果一個類被宣告為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被宣告為 abstract的,又被宣告為final的。將變數或方法宣告為final,

Java常見資料結構面試題答案

1.棧和佇列的共同特點是(只允許在端點處插入和刪除元素)4.棧通常採用的兩種儲存結構是(線性儲存結構和連結串列儲存結構)5.下列關於棧的敘述正確的是(D)     A.棧是非線性結構B.棧是一種樹狀結構C.棧具有先進先出的特徵D.棧有後進先出的特徵6.連結串列不具有的特點是(

這是你必須知道的Java集合框架面試題答案

無論是需要招聘的企業人員還是正在求職或者打算跳槽的程式設計師,今天這篇都值得一看。這裡整合了常見的Java集合框架面試題目,以及對應的nice的答案。面試這關至關重要,合適的問題和巧妙的回答,是企業和應

2019年19道java經典面試題答案

可變對象 caption 反射 進制 不可 tostring 靈活性 clear 散列表 1.不可變對象 指對象一旦被創建狀態不能再改變。任何修改都會創建一個新的對象,如 String、Integer及其它包裝類。 2.能否創建一個包含可變對象的不可變

springmvc和mybatis面試題答案

理解 頁面 發送請求 緩存 固定 sql tor 組件 poj 轉載:http://blog.csdn.net/xinghuo0007/article/details/53463897 Spring MVC Framework有這樣一些特點: 1。它是基於組件技術的.全部的

2018最新java試題技術面試

想是 res 指定位置 普通 數據庫連接 結果 not 要求 pub 1、servlet執行流程 客戶端發出http請求,web服務器將請求轉發到servlet容器,servlet容器解析url並根據web.xml找到相對應的servlet,並將request、respon

超全數據挖掘面試筆試題答案

縮放 window 目的 決策樹 密度 邊界 bp神經網絡 主場 至少 一、單選題(共80題) ( D )的目的縮小數據的取值範圍,使其更適合於數據挖掘算法的需要,並且能夠得到和原始數據相同的分析結果。 A.數據清洗 B.數據集成 C.數據變換 D.

一道Java試題---關於static

碰到一道蠻有趣的題;記錄一下~ 問:一下程式碼輸出結果是什麼?為什麼? 輸出結果: 我們改變一下上述程式碼中的語句執行順序;再看列印結果如下: 從以上兩個結果中可以看到,當語句public static B t2 = new B();改變了順序之後;結果順序也相應的發生了改變;是什麼原

Java試題基礎篇

  Java三個平臺 Java基本資料型別 介面和抽象類區別?為什麼用介面? Java是單繼承還是多繼承? 所有類的基類是?Java.Lang.object  object裡的方法? 說你下你用過哪些介面?類?抽象類? 重寫override 和過載ov

乾貨 | 45道CSS基礎面試題答案

  1、 介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的? 標準盒子模型:寬度=內容的寬度(content)+ border + padding + margin 低版本IE盒子模型:寬度=內容寬度(content+border+padding)+ mar

Struts2、Hibernate、Spring面試筆試題答案

Hibernate工作原理及為什麼要用?  原理:  1.讀取並解析配置檔案  2.讀取並解析對映資訊,建立SessionFactory  3.開啟Sesssion  4.建立事務Transation 

30道python真實面試題答案

  最近收集整理了100道python真實面試筆試題,並自己做了一些,希望能幫助大家,順利早日找到工作,限於篇幅問題,本文附有30道面試題計算答案。                學習Python中有

面試總結——Java高階工程師答案

面試前面也總結了一和二, 這第三篇可能更偏向於是內心的獨白篇和麵試技巧總結吧..... 一、獨白 之前也面試別人,現在輪到自己找工作,怎麼說呢,每個面試官的看法不一樣,面試的方式就不一樣,比如我面試別人我喜歡問專案中他用到了那些,然後針對用到的技術去問一些問題,或者說對於

資料庫常見面試題答案

1.事務四大特性  原子性,要麼執行,要麼不執行  隔離性,所有操作全部執行完以前,其它會話不能看到過程  一致性,事務前後,資料總額一致  永續性,一旦事務提交,對資料的改變就是永久的 2.資料庫隔離級別,每個級別會引發什麼問題,mysql預設是哪個級別 髒讀:事務B讀

HTML+CSS+JS面試題附帶答案

一、單項選擇(165題) 1.HTML是什麼意思? A)高階文字語言 B)超文字標記語言 C)擴充套件標記語言 D)圖形化標記語言 2.瀏覽器針對於HTML文件起到了什麼作用? A)瀏覽器用於建立HTML文件 B)瀏覽器

50道CSS基礎面試題答案

作者:劉寧Leo https://segmentfault.com/a/1190000013325778https://mp.weixin.qq.com/s/-s9U99TyH_SnMCCIDe1tMA1 介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?標

50道 CSS 經典面試題包含答案

1 介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?標準盒子模型:寬度=內容的寬度(content)+ border + padding + margin低版本IE盒子模型:寬度=內容寬度(content+border+padding)+ margin2

轉載的java試題值得推薦

之前實習的時候就想著寫一篇面經,後來忙就給忘了,現在找完工作了,也是該靜下心總結一下走過的路程了,我全盤托出,奉上這篇誠意之作,希望能給未來找工作的人一點指引和總結, 也希望能使大家少走點彎路 , 如果能耐心讀完,相信對你會找到你需要的東西。 先說一下LZ的基本情況,LZ是四川某985學校通訊專業的研究

Java試題61-70

61、執行緒池的常用引數有哪些? 在Java中,我們一般通過繼承Thread類和實現Runnnable介面,呼叫執行緒的start()方法實現執行緒的啟動。但如果併發的數量很多,而且每個執行緒都是執行很短的時間便結束了,那樣頻繁的建立執行緒和銷燬執行緒會大大的