java第五次作业





1.假帐克星-- Benford's Law

输入:

数据文件(filesize.txt,某文件存储设备上各种文件的尺寸),里面包含很多整数数据,每个数据占一行。

输出:

数字1-9打头的数据所占的比例。为了便于自动检查结果。请使用格式化输出,格式化字符串为

"%d: %6.1f%%\n"
其中第一个参数为数字1-9,第二个参数为对应的百分比。
public class Main{
	public static void main(String[] args) {
		int []num = new int[9];
		int count = 0;
		while(!StdIn.isEmpty()){
			String str =  StdIn.readLine();
			int t = Integer.parseInt(str);
			while(t >= 10){
				t = t / 10 ;
			}
			num[t - 1] = num[t - 1] + 1;	
			count++;
		}   
		for (int i = 0; i < 9; i++) {
			StdOut.printf("%d: %6.1f%%\n", i+1 , 100.00*num[i] / count);
		}
	}
}

2.阅历卡片

输入:

需要输出的年、月

输出:

对应的月历卡片。第一行为标题,年份用数字,月份用中文输出。第二行是星期几,请按照样例输出的格式输出。接下来的各行是日期,需要进行相应的对齐。注意,因为中文编码的关系,建议使用StdIn和StdOut进行输入输出操作。

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int year = input.nextInt();
		int month = input.nextInt();
		//当前月是星期几
		GregorianCalendar gregorianCalendar = new GregorianCalendar(year, month - 1, 1);
		int firstDayofWeek = gregorianCalendar.get(Calendar.DAY_OF_WEEK) - 1;
		//当前月的最大天数
		int monthMaxDayNum =  gregorianCalendar.getActualMaximum(Calendar.DATE);
		String[] arrayOfMonth = { "", "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" };
		StdOut.println("    " + year + "年" + arrayOfMonth[month]);
		StdOut.println("日 一 二 三 四 五 六");
		for (int nullno = 0; nullno < firstDayofWeek; nullno++) {
			StdOut.print("   ");
		}
		int j = 1;
		for (int i = firstDayofWeek; i <=6; i++,j++) {
			StdOut.printf("%2d ", j);
		}
		StdOut.println();
		// 循环输出该月日期
		for (int i = j,k = 1; i <= monthMaxDayNum; i++,k++) {
			StdOut.printf("%2d ", i);
			if (k % 7 != 0 && i!=monthMaxDayNum) {
				continue;
			}else{
				StdOut.println();
			}
		}
	}
}

3.病毒扩散模型

输入:

参数K和T,以及用起始时刻ts,终止时刻te和增量dt表示的一个时间区间[ts,te)。包含ts,但不含te

输出:

对应各个时刻点的感染个体的比例,用空格进行分隔,每10个数据后换行。最后一行如果不够10个数据也要换行。(补充:可能出现(te-ts)/dt不是整数的情形,要注意是否应该取最后那个点

输出数据请采用格式化字符串" %4.3f",即每个数据之前放置一个空格,数据保留小数点后三位有效数字

public class Main {
	public static void main(String[] args) {
		double k = StdIn.readDouble();
		double t = StdIn.readDouble();
		int ts = StdIn.readInt();
		int te = StdIn.readInt();
		double dt = StdIn.readDouble();
		double tts = ts;
		int i = 1;
		for (; tts < te; i++) {
			double result = Math.exp(k * (tts - t)) / (1 + Math.exp(k * (tts - t)));
			StdOut.printf(" %4.3f", result);
			if (i % 10 == 0 ) {
				StdOut.println();
			}
			tts = ts + i * dt;
		}
		if ((i-1) % 10 != 0) {
			StdOut.println();
		}
	}
}




你可能感兴趣的:(周昌令)