目录
1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
7. 求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数 本身,如: 153=1^3+5^3+3^3 ,则153是一个“水仙花数”。)
8. 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1
9. 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
题目列表
1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
public class Main {
public static void main(String[] args) {
int age;
Scanner scanner=new Scanner(System.in);
age=scanner.nextInt();
if(age<=18){
System.out.println("少年");
//java中不能用 19<=age<=28,只能使用一个比较操作符连接条件表达式(比如 age <= 28)
} else if (age >= 19 && age <= 28) {
System.out.println("青年");
}else if(age >= 56){
System.out.println("老年");
}else{
System.out.println("超出范围,请重新输入");
}
}
}
2. 判定一个数字是否是素数
public class Main {
public static void main(String[] args) {
int n;
int count = 0;
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
for (int i = 2; i < n; i++) {
if (n % i == 0) {
count++;
}
}
//添加 n == 1这个条件判断是因为数字 1 既不是质数(素数)也不是合数。
if (count > 0 || n == 1) {
System.out.println("不是素数");
} else {
System.out.println("是素数");
}
}
}
3. 打印 1 - 100 之间所有的素数
public class Main {
public static void main(String[] args) {
for (int n = 1; n <= 100; n++) {
int count = 0;
for (int i = 2; i < n; i++) {
if (n % i == 0) {
count++;
break; // 一旦发现能整除,就不再继续判断这个数,提高效率
}
}
if (count == 0 && n > 1) {
//n是数据," "是每一个数据之间打印一个空格
System.out.print(n + " ");
}
}
}
}
4. 输出 1000 - 2000 之间所有的闰年
public class Main {
public static void main(String[] args) {
for (int i = 100; i <=200 ; i++) {
if(i%4==0&&i%100!=0||i%400==0){
System.out.println(i+"是闰年");
}
}
}
}
5. 输出乘法口诀表
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 9 ; i++) {
for (int j = 1; j <= 9 ; j++) {
int sum = i * j;
System.out.println(i + "*" + j + "=" + sum);
}
}
}
}
6. 求两个正整数的最大公约数
public class Main{
public static int jkl(int a,int b){
if(b==0){
return a;
}else{
return jkl(b,a%b);
}
}
public static void main(String[] args) {
//相当于输入
Scanner scanner=new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1= scanner.nextInt();
System.out.println("请输入第二个数:");
int num2= scanner.nextInt();
int gcd=jkl(num1,num2);
System.out.println("两个数最大公约数:"+gcd);
}
}
7. 求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数 本身,如: 153=1^3+5^3+3^3 ,则153是一个“水仙花数”。)
public class Main {
public static void main(String[] args) {
for (int i = 0; i <=999 ; i++) {
int temp=i;
int sum=0;
//比如传进来的是123
while (temp!=0){
//pow(a,n)-->计算a的n次方
sum+=Math.pow(temp%10,3);
temp/=10;
}
//所以要等每一位都计算完毕后才能判断是否符合
if(sum==i){
System.out.println(i);
}
}
}
}
8. 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1
import java.util.Scanner;
public class Main {
public static int countOnes(int num) {
int count = 0;
while (num!= 0) {
//按位与操作(&)。
//num &= num - 1的作用是每次将最右边的一个 1 变为 0。
//解释如下:
//当 num 减去 1 时,会导致 num 二进制表示中最右边的一个 1 变为 0,并且这个 1 右边的所有位变为 1。
// 然后再与 num 进行按位与操作,就会把这个最右边的 1 消除掉。
//例如:
//num = 15,二进制为 1111。
//num - 1 = 14,二进制为 1110。
//num &= num - 1 即 1111 & 1110 = 1110,此时消除了最右边的一个 1。
//而如果是 num & 1,只是判断 num 二进制表示的最右边一位是否为 1,不能起到消除所有 1 并计数的作用。
num &= num - 1;
count++;
}
return count;
}
public static void main(String[] args) {
int number;
Scanner scanner=new Scanner(System.in);
number=scanner.nextInt();
int onesCount = countOnes(number);
System.out.println(number + " 的二进制中 1 的个数为:" + onesCount);
}
}
9. 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
//输出一个数的二进制奇数位和偶数位---用&1去判断
public class Main {
public static void main(String[] args) {
//32个位置,奇数是31,29这样下去
//偶数是30,28
//二进制7是:0111
// &0001 用&的结果是,两者为1的用1,其余为0
int n;
Scanner scanner=new Scanner(System.in);
//nextInt是代表int类型输入
//nextLine是代表
n=scanner.nextInt();
//目的想按照上面这个样子去输出
//现在这个是先拿到了需要输出在前面
/*for (int i = 0; i < 32; i++) {
System.out.print(((n>>i)&1)+" ");
}*/
System.out.println("偶数是");
//从32起是奇数,31就是偶数
for (int i = 31; i >= 0; i-=2) {
//n向右边移动i个单位---右往左
//&是按位异或
//它的规则是 0 1 1 1
// 1: & 0 0 0 1
// 0 1 1 1 ---两者比较数据一样结果就是一样的
// 两者不一样就是1
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)+" ");
}
}
10. 完成猜数字游戏
public class Main {
public static void main4(String[] args) {
//因为要输入多次猜,所以就用scanner
Scanner scanner=new Scanner(System.in);
//设置随机数字
Random random=new Random();
//由于是组合包,所以不要打bound,要直接输入数字就会自己出来bond了
//规定随机数字的范围,100=1-99
int randNum=random.nextInt(100);
//写一个死循环,只要找不到数字就一直输入
while (true){
System.out.println("输入要猜的数字:");
//赋予num循环输入数字的能力
int num= scanner.nextInt();
if(num<randNum){
System.out.println("猜小了");
} else if (num==randNum) {
System.out.println("恭喜你猜对了");
break;
}
else {
System.out.println("猜大了");
}
}
scanner.close();
}
}