当前位置: 首页 > news >正文

【JavaSE-5】程序逻辑控制相关练习题

1、判断一个数字是否是素数(质数)

//方法1:
import java.util.Scanner;
public static void main(String[] args) {
	//判断一个数字是否是素数:除了1和它本身外没有其他数可以整除
	Scanner scan  = new Scanner(System.in);
	int num = scan.nextInt();

	boolean flag = true;//默认表示输入的是质数

	//求开根号的方式 Math.sqrt()
	int i = 0;
	for (i = 2; i <= Math.sqrt(num); i++) {
		if(num % 2 == 0) {
			flag = false;
			break;
		}
	}
	
	if(flag && num > 1){//1不是质数也不是合数
		System.out.println(num + "是素数");
	}else{
		System.out.println(num + "不是素数");
	}
}

//方法2:
public static void main(String[] args) {
	//输入一个数据
	Scanner scanner = new Scanner(System.in);
	System.out.println("请输入一个整数:");
	int number = scanner.nextInt();

	boolean flag = true;//默认表示该整数是质数
	//判断
	for(int i = 2;i < number;i++){
		if(number % i == 0){
			//说明不是质数
			flag = false;
			break;//不用执行后续代码,直接跳出循环
		}
	}
	//需要单独判断1
	if(flag && number > 1){
		System.out.println(number + "是一个质数");
	}else{
		System.out.println(number + "不是一个质数");
	}
}

2、输出乘法口诀表

public static void main(String[] args) {
	//输出乘法口诀表
	int i = 0;
	for(i = 1;i <= 9;i++){
		int j = 0;
		for(j = 1;j <= i;j++){
			System.out.print(j + "*" + i + "=" + i*j+" ");
		}
		System.out.println();
	}
}

3、求两个正整数的最大公约数

public static void main(String[] args) {
	//求两个正整数的最大公约数:辗转相除法
	Scanner scan = new Scanner(System.in);
	int num1 = scan.nextInt();//18
	int num2 = scan.nextInt();//24
	int num3 = num1 % num2;//18
	while(num3 != 0){
		num1 = num2;//24 18
		num2 = num3;//18 6
		num3 = num1 % num2;//6 0
	}
	System.out.println(num2);
}

4、水仙花数

public static void main(String[] args) {
	//求水仙花数
	Scanner scan = new Scanner(System.in);
	System.out.println("请输入一个数字:");
	int num = scan.nextInt();//153
	int count = 0;//统计输入数的位数
	int tmp = num;
	//统计输入数字的总位数
	while(tmp != 0){
		tmp /= 10;
		count++;
	}
	tmp = num;
	int sum = 0;
	while(tmp != 0){
		sum += Math.pow(tmp % 10,count);//pow(x,y)是x的y次方
		tmp /= 10;
	}
	if(sum == num){
		System.out.println(num + "是水仙花数");
	}else{
		System.out.println(num + "不是水仙花数");
	}
}

5、求 3~6 位的水仙花数

public static void main(String[] args) {
	//求水仙花数
	int num = 0;
	for(num = 100;num <= 999999;num++){
		int count = 0;//统计输入数的位数
		int tmp = num;
		//统计输入数字的总位数
		while(tmp != 0){
			tmp /= 10;
			count++;
		}
		tmp = num;
		int sum = 0;
		while(tmp != 0){
			sum += Math.pow(tmp % 10,count);//pow(x,y)是x的y次方
			tmp /= 10;
		}
		if(sum == num){
			System.out.print(num + " ");
		}
	}

}
//运行结果:
//153 370 371 407 1634 8208 9474 54748 92727 93084 548834 

6、写一个函数返回参数二进制中 1 的个数比如: 15 0000 1111 4 个 1

public static void main(String[] args) {
	//返回参数二进制中1的个数
	int num = 15;
	int count = 0;//统计个数
	for (int i = 0; i < 32; i++) {
		if(((num >> i) & 1) == 1){
			count++;
		}
	}
	System.out.println(count);
}

但是上述代码需要根据输入的数据类型在更改,因为不同数据类型的大小不同,所以移动的位数也不用,下面方法可以适用所有情况

public static void main(String[] args) {
	int num = 15;
	int count = 0;
	while(num != 0){
		count++;
		num = num & (num-1);
	}
	System.out.println(count);
}

7、编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序

使用的是字符串String中的equals函数

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner((System.in));
		int count = 3;
		while(count != 0){
			System.out.println("请输入密码,你还有"+count+"次机会");
			String password = scan.nextLine();
			if(password.equals("123456")){
				System.out.println("登录成功");
				break;
			}else{
				count--;
				System.out.println("登录失败");
			}
		}
	}
}

8、获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		//获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		//输入的是一个int类型的数值
		//偶数位:
		for (int i = 31; i >= 1; i-=2) {
			System.out.print(((num >> i) & 1) + " ");
		}
		System.out.println();
		//奇数位:
		for (int i = 30; i >=0 ; i-=2) {
			System.out.print(((num >> i) & 1) + " ");
		}
	}
}

9、平方根

需求:键盘录入一个大于等于2的整数 x ,计算并返回 x 的 平方根 。结果只保留整数部分 ,小数部分将被舍去

//分析:
//平方根   16的平方根4
//         4的平方根2


// 10
// 1 * 1 = 1 < 10
// 2 * 2 = 4 < 10
// 3 * 3 = 9 < 10
// 4 * 4 = 16 > 10
//推断:10的平方根是在3~4之间。


// 20
// 1 * 1 = 1 < 20
// 2 * 2 = 4 < 20
// 3 * 3 = 9 < 20
// 4 * 4 = 16 < 20
// 5 * 5 = 25 > 20
//推断:20的平方根是在4~5之间。


//在代码当中
//从1开始循环,拿着数字的平方跟原来的数字进行比较
//如果小于的,那么继续往后判断
//如果相等,那么当前数字就是平方根
//如果大于的,那么前一个数字就是平方跟的整数部分


//1.键盘录入一个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int number = sc.nextInt();
//2.从1开始循环判断
//开始:1 结束: number
for (int i = 1; i <= number; i++) {
    //用i * i 再跟number进行比较
    if(i * i == number){
        System.out.println(i + "就是" + number + "的平方根");
        //一旦找到了,循环就可以停止了,后面的数字就不需要再找了,提高代码的运行效率。
        break;
    }else if(i * i > number){
        System.out.println((i - 1) + "就是" + number + "平方根的整数部分");
        break;
    }
}

在java中求平方根的方式:Math.sqrt(double a);

相关文章:

  • XS9935 ,4通道模拟复合视频解码芯片,双向音频数据同轴共缆传输
  • 如何远程访问svn中的URL
  • 【After Effects AE 动画特效制作笔记】
  • 使用AD画PCB时解决焊盘无法出线的问题
  • CASAIM与承光电子达成深度合作,三维扫描逆向建模技术助力车灯设计与制造向数字化与智能化转型
  • //定义一个方法,实现字符串反转//键盘输入一个字符串,调用该方法后,在控制台输出结果
  • 十一、Redis Sentinel(哨兵)—— 高可用架构与配置指南
  • .keystore文件转成pkcs1.pem文件记录
  • 【GStreamer】基于gst和gtk的简单videoplayer
  • 风虎云龙R87与RH87八卡服务器震撼首发
  • 如何获取BIOS信息
  • 如何解决软件开发中用户参与度低,反馈滞后的问题
  • IIC总线注意事项
  • XML布局文件与常用View组件
  • Linux(ubuntu)环境下部署The Fuck项目的方法(保姆级教程)
  • 永磁同步电机无速度算法--改进滑模观测器SMO(边界层法)
  • 解决JSON乱码问题:一个实用的.NET工具类
  • 1、语言的本质
  • 微服务保护:Sentinel
  • 三、0-1搭建springboot+vue3前后端分离-idea新建springboot项目
  • 衡水网站制作费用/12345浏览器网址大全
  • flash网站导航条怎么做/关键词搜索趋势
  • 网站建站步骤流程/seo网站优化推广怎么样
  • 做儿童网站赚钱吗/武汉网站排名推广
  • 音乐网站开发工具/网站建设杭州
  • 临海高端网站设计新感觉建站/怎样才能在百度上面做广告宣传