Java作业1

1.编写程序数一下 1到 100 的所有整数中出现多少个数字9

十位 n/10

个位 n%10

java 复制代码
    public static void main(String[] args) {
        int count = 0;
        for (int i = 1; i <= 100; i++) {
            if(i / 10 == 9){
                count++;
            }
            if(i%10==9){
                count++;
            }
        }
        System.out.println(count);
    }

2.给定一个数字,判定一个数字是否是素数

方法一

java 复制代码
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int i;
        for (i = 2;i < n;i++) {
            if(n%i == 0) {
                System.out.println("n不是素数:"+n);
                break;
            }
        }
        if(i >= n) {
            System.out.println(n + "是素数");
        }

方法二:任何一个数字n,都可以写成 n = a*b的形式。那么必然会有一个数字是小于等于2/n的。

java 复制代码
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    int i;
    for (i = 2;i <= n/2;i++) {
        if(n%i == 0) {
            //System.out.println("n不是素数:"+n);
            break;
        }
    }
    if(i > n/2) {
        System.out.println(n + "是素数");
    }
}

方法三:任何一个数字n,都可以写成 n = a*b的形式。那么必然会有一个数字是小于等于根号n的。

java 复制代码
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    int i;
    for (i = 2;i <= Math.sqrt(n);i++) {
        if(n%i == 0) {
            //System.out.println("n不是素数:"+n);
            break;
        }
    }
    if(i > Math.sqrt(n)) {
        System.out.println(n + "是素数");
    }
}

变式:求出1到n之间所有素数

java 复制代码
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        for (int k = 1; k < n; k++) {
            int i = 2;
            for (; i < k; i++) {
                if(k%i==0){
                    break;
                }
            }
            if (i == k){
                System.out.println(k+"是素数");
            }

        }
    }

3.给定两个数,求这两个数的最大公约数

java 复制代码
public static void main(String[] args) {
       int a = 18;
       int b = 24;
       int c = a%b;
       while (c != 0) {
           a = b;
           b = c;
           c = a%b;
       }
       System.out.println(b);
}

4.计算1/1-1/2+1/3-1/4+1/5 ...... + 1/99 - 1/100 的值 。

java 复制代码
    public static void main(String[] args) {
        double sum = 0.0;
        int flag = 1;
        for (int i = 1; i <= 100; i++) {
            sum+=1.0/i * flag;
            flag = -flag;
        }
        System.out.println(sum);
    }

5.KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用"*"组成的X形图案。

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成"X"的反斜线和正斜线的长度。

输出描述:

针对每行输入,输出用"*"组成的X形图案。

java 复制代码
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n;
        while (scanner.hasNextInt()) {
            n = scanner.nextInt();
            for(int i = 0; i < n; i++){
                for(int j = 0; j< n; j++){
                    if(i == j || (i + j) == n-1){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }  
}

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

java 复制代码
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int count = 3;
        while(count != 0){
            System.out.println("请输入密码,你还有 " + count + " 次机会!");
            String password = scanner.nextLine();
            if(password.equals("1234")){
                System.out.println("登陆成功");
            }else{
                System.out.println("密码错误");
            }
        }
    }

7.输出n*n的乘法口诀表,n由用户输入。

java 复制代码
public static void main(String[] args) {
	for (int i = 1; i <= 9 ; i++) {
		for (int j = 1; j <= i; j++) {
            //注意这里的拼接,不要是换行
			System.out.print(j+"*"+i+"="+i*j+" ");
		}
		System.out.println();
	}
}

8.求出0~999之间的所有"水仙花数"并输出。("水仙花数"是指一个三位数,其各位数字的立方和确

好等于该数
本身,如: 153 = 1^3 + 5^3 + 3^3 ,则 153 是一个 " 水仙花数 " 。 )

java 复制代码
    public static void main(String[] args) {
        for (int i = 0; i < 999999; i++) {
            int count = 0;//计算i有几位数
            int tmp = i;
            while(i != 0){
                count++;
                i = i / 10;
            }
            //count的值是多少位数 i还是没有变的
            //计算i的每一位
            tmp = i;
            int sum = 0;
            while(tmp != 0){
                sum += Math.pow(tmp % 10, count);
                tmp /= 10;

            }
            if (sum == i){
                System.out.println(i);
            }
        }
    }

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

每一次&都会少掉一个1

  1. 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
java 复制代码
  public static void main(String[] args) {
        int n = 7;
        for (int i = 31; i >= 0 ; i-=2) {
            System.out.print(((n >>> i) & 1 )+" ");//右移
        }
        System.out.println();//换行
        for (int i = 30; i >= 0 ; i-=2) {
            System.out.print(((n >>> i) & 1 )+" ");
        }
    }
相关推荐
Sylvia-girl3 小时前
Java——抽象类
java·开发语言
Yana.nice5 小时前
Bash函数详解
开发语言·chrome·bash
Touper.6 小时前
Redis 基础详细介绍(Redis简单介绍,命令行客户端,Redis 命令,Java客户端)
java·数据库·redis
m0_535064606 小时前
C++模版编程:类模版与继承
java·jvm·c++
今天背单词了吗9807 小时前
算法学习笔记:19.牛顿迭代法——从原理到实战,涵盖 LeetCode 与考研 408 例题
笔记·学习·算法·牛顿迭代法
虾条_花吹雪7 小时前
Using Spring for Apache Pulsar:Message Production
java·ai·中间件
tomorrow.hello7 小时前
Java并发测试工具
java·开发语言·测试工具
Moso_Rx7 小时前
javaEE——synchronized关键字
java·java-ee
晓13137 小时前
JavaScript加强篇——第四章 日期对象与DOM节点(基础)
开发语言·前端·javascript
老胖闲聊7 小时前
Python I/O 库【输入输出】全面详解
开发语言·python