您的位置:首页 > 编程语言 > Java开发

java第五次作业

2013-04-19 12:01 288 查看








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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: