1. 程式人生 > >全國高校綠色計算大賽-模擬賽第一階段題解

全國高校綠色計算大賽-模擬賽第一階段題解

第1關:求和

挑戰任務

這次“綠盟杯”大賽,小明作為參賽選手在練習的時候遇到一個問題,他要對一個範圍的兩個數進行數位的累加,例如有兩個數 1519 則 他們的數位和應該為:
1+5+1+6+1+7+1+8+1+9,結果為40。

你來幫他解決這個問題吧。

程式設計要求

補充完善右側程式碼區中的getSum(int num1,int num2)函式,實現對兩個數num1num2的數位和相加,最後返回計算的結果即可。

注:num1num2的值都在1-999之間。

測試說明

樣例1

輸入:
15
19

輸出:
40

注意:

  • 本關的具體評測程式碼由平臺後臺提供,你只需補充完善getSum
    函式,將計算結果作為返回值返回即可;
  • 本關共包含4個測試用例,需所有測試用例評測通過才能得分;
  • 平臺使用的Java版本為:JDK8.0

開始挑戰吧,祝你成功!

AcCode:

package step1;

public class Task {

	
	public int getSum(int num1, int num2) {
		/********** BEGIN **********/
        int result = 0;
		for(int i=num1;i<=num2;i++){
        	int k = i;
            while(k!=0){
            	result+=k%10;
                k=k/10;
            }
        }
		
		return result;
		/********** END **********/
	}
}

第2關:檔案檢視器

挑戰任務

參加“綠盟杯”競賽的小紅遇到一個問題,她想要編寫程式碼實現一個檔案檢視器,要實現指定資料夾下所有檔案以及資料夾目錄結構的展示。

你來幫她實現這個功能吧。

程式設計要求

編寫程式碼實現對給定資料夾目錄結構的展示,如果是資料夾則在其名字之前加上+--若是檔案則加上--,上級目錄與下級目錄、下級檔案用兩個空格作為間隔,如果資料夾與檔案平級,優先列印資料夾;補充完善右側程式碼區中的showDirStructure(File dir)函式實現要求的功能,其中函式引數含義如下:

  • dir:指定要顯示的資料夾

測試說明

樣例1

輸入:src/step2/root

輸出:

樣例2

輸入:src/step2/dir

輸出:

提示:java中的File類有listFiles方法可以獲取檔案目錄。

你可以通過如下連結下載本關涉及到的目錄檔案:
https://www.educoder.net/attachments/download/200773/step2Dir.zip


開始挑戰吧,祝你成功!

AcCode:

package step2;

import java.io.File;

public class Task {
	
	/********** BEGIN **********/
    public boolean csh = true;
	public int countYwj = 0;
	public void showDirStructure(File file)	{
		
		if (csh) {
			System.out.println("+--" + file.getName());
			for (int i = 0; i < file.getAbsolutePath().length(); i++) {
				if (file.getAbsolutePath().charAt(i) == '/') {
					countYwj++;
				}
			}
			csh = false;
		}

		File[] files = file.listFiles();
		for (File file2 : files) {
			String filePath = file2.getAbsolutePath();
			int countThisFile = 0;
			for (int i = 0; i < filePath.length(); i++) {
				if (filePath.charAt(i) == '/') {
					countThisFile++;
				}
			}
			for (int i = 1; i <= 2 * (countThisFile - countYwj); i++) {
				System.out.print(" ");
			}
			if (!file2.isDirectory()) {
				System.out.println("--" + file2.getName());
			} else {
				System.out.println("+--" + file2.getName());
				showDirStructure(file2);
			}
		}
	}
	
	/********** END **********/
}

注意:OJ使用的是linux系統,檔案分隔符是'/',由於我使用的是Windows系統本地測了好久發現沒問題發現是分隔符錯了,多花了好久時間

第3關:圖片檢視器

挑戰任務

參加“綠盟杯”競賽的小明想要開發一個圖片檢視器,他想只顯示資料夾下所有圖片型別的檔案。

你來幫小明實現這個功能吧。

程式設計要求

基本功能與第二題類似,編寫程式碼實現對給定資料夾目錄結構的展示,如果是資料夾則在其名字之前加上+--若是檔案則加上--,上級目錄與下級目錄、下級檔案用兩個空格作為間隔,如果資料夾與檔案平級,優先列印資料夾;另外需要對檔案進行過濾,只顯示圖片型別的檔案,本關需要過濾的圖片檔案型別有:“jpg,png,bmp”,請補充完善右側程式碼區中的showDirStructure(File dir)函式實現本關要求的功能,其中函式引數含義如下:

  • dir:指定要顯示的資料夾

測試說明

樣例1

輸入:src/step3/root

輸出:

樣例2

輸入:src/step2/dir

輸出:

提示:

你可以通過如下連結下載本關涉及到的目錄檔案:
https://www.educoder.net/attachments/download/202620/step3Dir.zip


開始挑戰吧,祝你成功!

AcCode:

package step3;

import java.io.File;

public class Task {
	
	/********** BEGIN **********/
	public void showDirStructure(File file)	{
			System.out.println("+--" + file.getName());
	        showDirTree(file," ");
	}
	public static void showDirTree(File dir,String interval){
	        File[] files = dir.listFiles();
	        interval += " ";
	        for (File file : files) {
	            if(!file.isDirectory()){
	            	String fileName = file.getName();
	            	if(fileName.endsWith(".jpg") || fileName.endsWith(".png") || fileName.endsWith(".bmp")) {
	            		System.out.println(interval + "--" +  file.getName());
	            	}
	            }else{
	               System.out.println(interval + "+--" +  file.getName());
	                showDirTree(file,interval + " ");
	            }
	        }
	    }

	/********** END **********/
}