循环结构(1、求二进制中1的个数;2、最大公约数和最小公倍数;3计算1/1-1/2+1/3-1/4+1/5 …+ 1/99 - 1/100 的值;4、水仙花;5、猜数字游戏)

1、求一个整数,在内存当中存储时,二进制1的个数。

注意:m=m&(m-1),直到m变为0。与运算多少次,就有多少个1。

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
     Scanner input=new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int m=input.nextInt();
        System.out.println("二进制中1的个数为:"+count(m));
    }
    public static int count(int m){
        int count=0;
        while(m!=0){
            m=m&(m-1);
             count++;
            }
        return count;
    }
}

2、求两个正整数的最大公约数和最小公倍数

注意:有两个数m和n,最小公倍数=(m*n)/最大公约数

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
     Scanner input=new Scanner(System.in);
        System.out.println("请输入两个整数:");
        int m=input.nextInt();
        int n=input.nextInt();
        int A=m,B=n;
        if(n>m){  //使用异或交换m和n的值
            m=m^n;
            n=m^n;
            m=m^n;
        }
        while(m%n!=0){
            int k=m%n;
            m=n;
            n=k;
        }
        System.out.println("最大公约数为:"+n);
        System.out.println("最小公倍数为:"+A*B/n);
    }
}
3、计算1/1-1/2+1/3-1/4+1/5 …+ 1/99 - 1/100 的值 。

注意:sum为浮点数。

public class Test {
    public static void main(String[] args) {
    int flag=1;
    double sum=0;
    for(int i=1;i<=100;i++){
        sum+=1.0/i*flag;
        flag*=-1;
    }
        System.out.println(sum);
    }
}
4、求出100~999之间的所有“水仙花数”并输出。

(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=1+5+3?,则153是一个“水仙花数“。)
注意:使用pow函数时应导入import java.lang.Math;

import java.lang.Math;
public class Test {
    public static void main(String[] args) {
    for(int i=100;i<1000;i++){
        double ge=i%10;
        double shi=i/10%10;
        double bai=i/100;
        if(i==Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3)){
            System.out.println(i);
        }
     }
    }
}
5、完成猜数字游戏(1~100)

注意:使用(int)(Math.random()*100+1)产生1~100的 随机数。

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
        int key=(int)(Math.random()*100+1);
   while(true){
       System.out.println("请输入一个数字:");
       int guess=input.nextInt();
       if(key<guess){
           System.out.println("猜大了");
       }
       else if(key>guess){
           System.out.println("猜小了");
       }
       else{
           System.out.println("恭喜你,猜对了");
           break;
       }
     }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值