SDUT PTA JAVA12 常用类(日期、数学、封装类、随机数等)习题

7-7 无聊的小明来数1 (10 分)


import java.util.Calendar;
import java.util.Random;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n=sc.nextInt();
		for(int i=0;i<n;i++) {
		  int k=sc.nextInt();
		 String cnt=Integer.toBinaryString(k);
		 int ans=0;
		 for(int j=0;j<cnt.length();j++) {
			char ch=cnt.charAt(j);
			if(ch=='1') ans++;
		 }
		 System.out.println(ans);
		}
		sc.close();

}
}


7-6 那年有几个黑五? (10 分)


import java.util.Calendar;
import java.util.Random;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str=sc.nextLine();
		int year=Integer.parseInt(str);
		int sum=0;
		Calendar ca= Calendar.getInstance();
		for(int i=0;i<12;i++) {
			ca.set(year,i,12);
			if(ca.get(Calendar.DAY_OF_WEEK)==6) {
				sum++;
			}
		}
		System.out.println(sum);
		sc.close();

}
}


7-5 jmu-Java-01入门-取数字浮点数 (10 分)

代码1

import java.util.Random;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String s=sc.nextLine();
			int n=s.length();
			char[] a=s.toCharArray();
			int ans=0;
			for(int i=0;i<n;i++) {
				if(Character.isDigit(a[i])) {
//使用isDigit判断是否为数字
//使用isLetter判断是否为字母
					ans+=a[i]-'0';
				}
			}
			System.out.println(ans);
		}
		sc.close();

}
}


代码2

import java.util.Random;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String s=sc.nextLine();
			int n=s.length();
			char[] a=s.toCharArray();
			int ans=0;
			for(int i=0;i<n;i++) {
				if('0'<=a[i]&&a[i]<='9') {
					ans+=a[i]-'0';
				}
			}
			System.out.println(ans);
		}
		sc.close();

}
}


7-4 jmu-java-随机数-使用蒙特卡罗法计算圆周率的值 (10 分)

背吧

import java.util.Random;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long seed=sc.nextLong();
		int n=sc.nextInt();
		Random R=new Random(seed);
		
		int count=0;
		for(int i=0;i<n;i++) {
			double x=R.nextDouble()*2-1;
			//生成[-1,1)区间的小数:
			double y=R.nextDouble()*2-1;
			//生成[-1,1)区间的小数:
			
			if(Math.pow(x, 2)+Math.pow(y,2)<=1) {
				count++;//统计落入圆内的次数
			}
		}
		System.out.println(4*(double)count/n);
		//count/n就是落入圆内的概率
		//经过题目公式推导容易得4*(double)count/n)就是PI
		sc.close();

}
}


7-3 伪随机数 (10 分)

import java.util.Random;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		int k=sc.nextInt();
		Random R=new Random(k) ;
		//使用种子 k 创建一个新的随机数生成器。
		
		//你在创建一个Random对象的时候,给定任意一个合法的种子数,
		//种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系。
		//对于种子相同的Random对象,生成的随机数序列是一样的。
		int t=-1;
		for(int i=0;i<n;i++) {
			t=R.nextInt(m);
			//生成[0,m)区间的整数:
			//生成下一个伪随机数。
		}
		System.out.println(t);
		sc.close();

}
}


(逐步逼近法)7-2 jmu-Java-01入门-开根号 (10 分)

NaN = not a number“不是一个合理的实数”

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			 double n=sc.nextDouble();
			 double tmp=0;
			 if(n<0) {
				 System.out.println(Double.NaN);
			 }
			 else {
				 while(Math.pow(tmp, 2)<n&&Math.abs(n-tmp*tmp)>0.0001) {
					 tmp+=0.0001;
				 }
				 System.out.printf("%.6f\n",tmp);
			 }
		
			
	}
		sc.close();

}
}


7-1 sdut-常用类-骄傲的代价 (10 分)

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long t=sc.nextLong();
		for(int i=0;i<t;i++) {
			BigInteger a=sc.nextBigInteger();
			BigInteger b=sc.nextBigInteger();
		    System.out.println(a+"+"+b+"="+a.add(b));
		    System.out.println(a+"-"+b+"="+a.subtract(b));
		    System.out.println(a+"*"+b+"="+a.multiply(b));
		    System.out.println(a+"/"+b+"="+a.divide(b));
		    System.out.println(a+"%"+b+"="+a.mod(b));
		}
	    sc.close();
	}
	}


posted @ 2021-11-18 16:25  kingwzun  阅读(173)  评论(0编辑  收藏  举报