输入1-7,输出工作日或休息日

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Scanner scan = new Scanner(System.in);
switch(scan.nextInt()) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
default:
System.out.println("输入错误");
break;
}

switch 中的值只能是 整数|枚举|字符|字符串,long、double、float、boolean不能作为switch参数的类型。

判断一个数是否为素数(3种方法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Scanner scan = new Scanner(System.in);
int num=scan.nextInt();
int i=1;
for(i=2;i<num;i++) {
//方法2:i<=num/2
//方法3:i<=Math.sqrt(num);
if(num%i==0) {
System.out.println(num+"不是素数");
break;
}
}
if(i>=num){
System.out.println(num+"是素数");
}

打印100以内的所有素数

1
2
3
4
5
6
7
8
9
10
11
12
int j=0;
for(j=2;j<=100;j++) {
int i=1;
for(i=2;i<j;i++){
if(j%i==0){
break;
}
}
if(i==j){
System.out.println(j+"是素数");
}
}

输出1000-2000之间的所有闰年

1
2
3
4
5
int year=1000;
for(year=1000;year<=2000;year++) {
if(year%4==0&&year%100!=0||year%400==0) {
System.out.println(year+"是闰年");
}

输出乘法口诀表

1
2
3
4
5
6
7
8
int i=1;
int j=1;
for(i=1;i<=9;i++) { //i--行数
for(j=1;j<=i;j++){ //j--列数 列数的多少取决于第一行 第一行有一列,第二行有两列,……
System.out.print(j+"*"+i+"="+i*j+"");
}
System.out.println();
}

求两个数的最大公约数

1
2
3
4
5
6
7
8
9
10
11
Scanner scan = new Scanner(System.in);
int a=scan.nextInt();
int b=scan.nextInt();
int c=b;
while(a%b!=0) {
c=a%b;
a=b;
b=c;
}
System.out.println(a+"和"+b+"的最大公约数是"+c);
}

计算1/1-1/2+1/3……+1/99-1/100的值

1
2
3
4
5
6
7
8
int flag=1;
int j=1;
double sum=0;
for(j=1;j<=100;j++) {
sum += 1.0/j*flag;
flag=-flag;
}
System.out.println(sum);

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

1
2
3
4
5
6
7
8
int i=1;
int count=0;
for(i=1;i<=100;i++){
if(i%10==9||i/10==9) {
count++;
}
}
System.out.println(count);

求出0~999之间的所有”水仙花”

1
2
3
4
5
6
int i=100;
for(i=100;i<1000;i++) {
if(Math.pow(i%10,3)+Math.pow(i/10%10,3)+Math.pow(i/100%10,3)==i) {
System.out.println(i);
}
}

改进:求出1-6位数的自幂数

附:其他位数的自幂数名字

一位自幂数:独身数;三位自幂数:水仙花数;四位自幂数:四叶玫瑰数;五位自幂数:五角星数;六位自幂数:六合数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int i=1;
for(i=1;i<=9999999;i++) {
int count=0;
int temp=i;
int sum=0;
//p
while (temp!=0) {
count++;
temp=temp/10;
}
temp=i;
while(temp!=0){
sum += Math.pow(temp%10,count);
temp=temp/10;
}
if(sum==i){
System.out.println(sum);
}
}

编写代码模拟三次密码输入场景,最多输入3次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Scanner scan =new Scanner(System.in);
String input = scan.next();
int count=2;
for(count=2;count>0;count--) {
if(input.equals("zzz123")){ //🔺不能用=
System.out.println("密码正确,登陆成功");
break;
}else {
System.out.println("输入错误,你还有"+count+"次机会");
}
input = scan.next();
}
if(count<=0){
System.out.println("三次均输错,退出程序");
}

输入一个数,输出该数二进制中1的个数:

1
2
3
4
5
6
7
8
9
10
Scanner scan = new Scanner(System.in);
int num=scan.nextInt();
int count=0;
int i=0;
for(i=0;i<32;i++) {
if(((num>>i)&1)==1){
count++;
}
}
System.out.println(num+"二进制中1的个数为:"+count);

改进:

image-20211123124426921

1
2
3
4
5
6
7
8
Scanner scan =new Scanner(System.in);
int n = scan.nextInt();
int count=0;
while(n!=0){
n=n&(n-1);
count++;
}
System.out.println(count);