未分类
2020-09-21 08:49:31
1822677238@qq.com
手机扫码查看
javaSE基础综合习题
1.(循环)输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)
import java.util.Scanner;
public class demos{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入整数");
int n=sc.nextInt();
int sum=0;
for(int i=0;i<n;i++){
sum+=n%10;
n=n/10;
}
System.out.println(sum);
}
}
2.(循环)计算圆周率
中国古代数学家研究出了计算圆周率最简单的办法:
PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17
这个算式的结果会无限接近于圆周率的值,我国古代数学家祖冲之计算出,圆周率在 3.1415926 和
3.1415927 之间,请编程计算,要想得到这样的结果,他要经过多少次加减法运算?
public class demos{
public static void main(String[] args) {
double pi=0;//累加pi的值
double a=1;//分母
int b=1;//计算是加还是减
int i=0;//计数器
while (pi < 3.1415926 || pi > 3.1415927) {
/*
pi=4/1-4/3+4/5-4....
*/
pi+=b*4/a;//pi=0+1*4/1(pi=4/1) pi=4+-1*4/3(pi=4+-4/3)
i++;//i=1 i=2
b*=-1;//b=1*-1(-1) b=-1*-1(1)
a+=2;//a=a+2(a=3.0) a=3.0+2(5)
}
System.out.println(i);
}
}
3.(数组)筛选法求质数
输入一个整数n,求小于这个整数的所有质数。
算法:定义一个长度为n的布尔数组,true为质数,false为不是质数。
初始均为true,之后从2开始循环:
1.找到第一个为true的下标i
2.把所有下标i的倍数的值重置为false
3.直到扫描完数组中的所有数值。
4.最后遍历数组,如果下标i的值为true,则说明 i为质数
import java.util.Scanner;
public class demos{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入整数");
int n=sc.nextInt();
boolean[] b=new boolean[n+1];//初始化数组
//数组初始值均为true
for(int i=0;i<b.length;i++){
b[i]=true;
}
//从2开始循环
for(int i=2;i<b.length;i++){
if(b[i]){//如果布尔数组存有true
//将i的倍数所有值重置为false
for(int j=i*2;j<b.length;j+=i){
b[j]=false;
}
}else continue;//否则跳过
}
//循环遍历打印数组
for(int i=2;i<b.length;i++){
if(b[i]){
System.out.print(i+"\t");
}
}
System.out.println();
}
}
4.(数组)十五个猴子围成一圈选大王,依次 1-7 循环报数,报到 7 的猴子被淘汰,直到最后一只猴子成
为大王。问,哪只猴子最后能成为大王?
public class demos{
public static void main(String[] args) {
int size=15;
//true淘汰 false没淘汰
boolean[] b=new boolean[15];
int num=1;
int index=0;
while (size > 1) {
if(!b[index]){
num++;
if(num==8){
b[index]=true;
num=1;
size--;
}
}
index++;
if (index == 15) {
index=0;
}
}
for(int i=0;i<b.length;i++){
if(!b[i]){
System.out.println(i+1);
}
}
}
}
5.(数组)八皇后问题
在 8×8 的国际象棋盘上,放置八个皇后,使任何一个皇后都不能吃掉另一个。国 际象棋规则中,皇后
可以吃到任何一个与他在同一行、同一列或者同一斜线上的敌方棋子,所以八皇后问题的所有解满足。8
个皇后都不在同一行、同一列,或者同一斜线上。
输出所有的解。
提示:使用递归。
public class EightQueen {
static int[] queens = new int[8]; //表示每一行皇后的纵坐标
static int solveNum = 1; //统计解的数量
public static void main(String[] args) {
put(0);
}
//判断在之前的基础上在第n行放第m列是否可行
public static boolean canPut(int n, int m){
//判断是否有在同一列的
for(int i = 0; i<n; i++){
if (queens[i] == m) return false;
}
//判断是否有在左上-->右下对角线
for(int i = 0; i<n; i++){
if (queens[i] - i == m - n) return false;
}
//判断是否有在右上-->左下对角线
for(int i = 0; i<n; i++){
if (queens[i] + i == m + n) return false;
}
return true;
}
//表示尝试放置第n行的皇后
public static void put(int n){
if (n == 8){
System.out.println(solveNum++);
printQueen();
return;
}
for(int i = 0; i<queens.length; i++){
if (canPut(n, i)){
queens[n] = i;
put(n+1);
queens[n] = 0;
}
}
}
public static void printQueen(){
for(int i = 0; i<queens.length; i++){
for(int j = 0; j<queens.length; j++){
if (queens[i] == j){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
- 本页地址 https://www.9713job.com/?p=2279
- 上一篇 <<2020java教程:单例模式
- 下一篇 >>2020java教程:java8之枚举



发表回复