全国高校绿色计算大赛-模拟赛第一阶段题解

第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 **********/
}

 

你可能感兴趣的:(全国高校绿色计算大赛)