- 1.输出一个整数的每一位
- 2.输出1000-2000之间所有的闰年
- 3.打印1-100之间所有的素数
- 4.输出乘法口诀
- 5.求两个整数的最大公约数
- 6.计算1/1-1/2+1/3-1/4+1/5......+1/99-1/100的值
- 7.1到100之间的所有整数中出现多少个9
- 8.输出10000000以内的自幂数
- 9.编写代码模拟三次密码输入场景
- 10.写一个函数返回参数二进制中1的个数
- 11.判断数字n是不是2的k次方
- 12.获取一个数二进制序列中所有的偶数位和奇数位(*)
- 13.完成猜数字游戏
参考代码:
//通过循环来不断的%10/10来获取每一位 public static void func4(int n){ while(n!=0){ System.out.print(n%10+" "); n/=10; } }2.输出1000-2000之间所有的闰年
参考代码:
//2.输出1000-2000之间所有的闰年 for(int year=1000;year<=2000;year++){ if((year % 4 == 0&& year % 100 != 0)||year % 400 == 0){ System.out.println(year); } }3.打印1-100之间所有的素数
素数:大于1自然数,且只能被1和其自身整除的数
参考代码:
public class test { public static boolean isPrime1(int n) {//方法一 for(int i = 2;i < n;i++){ if(n % i==0){//在n的范围内没有其他数字可以被n整除 return false;//否则返回 false } } return true; } public static boolean isPrime2(int n) {//方法二 for(int i = 2;i <=Math.sqrt(n);i++){ //该算法只在该数字的开方内寻找,效率更高 if(n % i==0){ return false; } } return true; }4.输出乘法口诀
参考代码:
// 3.输出乘法口诀 for(int i=1;i<=9;i++){//一共打印9行 for(int j=1;j<=i;j++){//每行的输出不超过行数 //注意这里是print System.out.print(j+"*"+i+"="+i*j+" "); } System.out.println(); }
输出结果:
辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数
参考代码:
// 求两个整数的最大公约数 //辗转相除法 public static int func(int a,int b){//辗转相除法 int c = a % b; while(c!=0){//余数不为0,则进入循环 a=b;//把除数赋值给被除数 b=c;//余数赋给除数 c=a%b;//新的余数 } return b; }6.计算1/1-1/2+1/3-1/4+1/5…+1/99-1/100的值
参考代码:
public static double func1(int n){//求1/1-1/2+1/3-1/4+1/5......+1/99-1/100的值 double sum=0.0;//注意,需要用double 类型 int flg=1;//用于修改+-号 for(int i=1;i<=n;i++){ sum=sum+(flg)*1.0/i; flg=-flg; } return sum; }
运行结果:
参考代码:
public static int func2(int n){ int count=0; for(int i=1;i<=n;i++){//99有两个9 if(i%10==9){//个位上有9的数字个数 count++; }if(i/10==9){//十位上有9的个数 count++; } } return count; }
运行结果:
如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。(按10进制)
例如:在十进制中,153是一个三位数,各个数位的3次幂之和为
1 ^ 3+5 ^ 3+3^3=153,所以153是十进制中的自幂数
public static void func6(int n){ for(int i=0;i运行结果:屏幕大小受限1~9之间的没有截屏
9.编写代码模拟三次密码输入场景
参考代码:
public static void guessPassword(){//猜密码三次登陆 Scanner scanner = new Scanner(System.in); int count = 3; while(count != 0){ System.out.println("请输入你要猜的密码:"); String password = scanner.nextLine(); if(password.equals("superman")){ System.out.println("登录成功!"); return; }else{ count--; System.out.println("你还有"+count+"次机会!"); } } }运行结果:
10.写一个函数返回参数二进制中1的个数
//输入20 public static int func3(int n){ int count = 0; while(n!=0){ count++; n=n&(n-1); } return count; }运行结果:
11.判断数字n是不是2的k次方
若n是2的k次方则其在内存中的二进制只有一位是1,此时 n&n-1结果是0
参考代码:public static boolean fun5(int n){ return ((n&(n-1))==0); }12.获取一个数二进制序列中所有的偶数位和奇数位(*)解题思路:
创建 n 变量储存输入数,然后由两个循环分别由高位到低位遍历输入数的二进制序列。奇数列从 n >> 31 一直遍历到 n >> 1 并将每一位都输出,需要注意 println 是带换行符的输出,为了让数列保持在同一行,要换用 print 来输出,循环结束后再加一个换行语句,开启下一条偶数列循环。偶数列由 n >> 30 遍历到 n >> 0 并将每一位都输出,就能得到偶数列。
代码实现:public static void main(String[] args) { System.out.println("请输入一个整数: "); Scanner scan = new Scanner(System.in); int n = scan.nextInt(); //打印奇数 System.out.println("奇数是:"); for(int i = 31; i >= 1; i -= 2){ System.out.print(((n>>i)&1) + " "); } System.out.println(); //打印偶数 System.out.println("偶数是:"); for(int i = 30; i >= 0; i -= 2){ System.out.print(((n>>i)&1) + " "); }运行结果:
13.完成猜数字游戏
游戏规则:
系统自动生成一个随机整数(1-100),然后用户输入一个猜测的数字,如果输入的数字比该随机数小,提示“猜小了”,如果输入的数字比随机数小提示“猜大了”,如果相等则输入“猜对了”。
参考代码:import java.util.Random; import java.util.Scanner; public class test { // 12.完成猜数字游戏 Random random = new Random();//默认随机种子是系统时间 Scanner sc = new Scanner(System.in); int toGuess = random.nextInt(100)+1;//随机生成的数字范围是[0,100),+1才满足题意 while(true) { System.out.println("请输入要猜测的数字:(1-100)"); int num = sc.nextInt(); if (num < toGuess) { System.out.println("猜小了"); } else if (num > toGuess) { System.out.println("猜大了"); } else { System.out.println("恭喜你,猜对了"); break; } } } }运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)