全國高校綠色計算大賽-模擬賽第一階段題解
第1關:求和
挑戰任務
這次“綠盟杯”大賽,小明作為參賽選手在練習的時候遇到一個問題,他要對一個範圍的兩個數進行數位的累加,例如有兩個數 15
,19
則 他們的數位和應該為:
1+5+1+6+1+7+1+8+1+9,結果為40。
你來幫他解決這個問題吧。
補充完善右側程式碼區中的getSum(int num1,int num2)
函式,實現對兩個數num1
和num2
的數位和相加,最後返回計算的結果即可。
注:num1
和num2
的值都在1-999
之間。
輸入: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
:指定要顯示的資料夾
輸入:src/step2/root
輸出:
輸入: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
:指定要顯示的資料夾
輸入:src/step3/root
輸出:
輸入: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 **********/
}