Java操作符、流程控制基础练习

一. 代码观察

题目

观察以下代码

int a = 6--;
System.out.println(a);

问题:上面代码是否有错误,如果没有,程序结果是多少?

答案

上面代码有错误。a----a 才是正确的自减写法。6-- 中 的 -- 被认定为运算符

二. 代码分析

题目

分析以下代码的运行结果【重点复习原码 反码 补码】

System.out.println(5&9); 
System.out.println(5|9); 
System.out.println(5^9); 
System.out.println(~-5);
System.out.println(5<<2); 
System.out.println(-5<<2); 
System.out.println(-5>>2);
System.out.println(-5>>>2); 
System.out.println(5>>2);
System.out.println(5>>34); 
System.out.println(97=='a'); 
System.out.println(5.0==5);
System.out.println(4>5 ^ 'c'>'a');
System.out.println((int)(char)(byte)-1);
答案
System.out.println(5&9); // 1
System.out.println(5|9); // 13
System.out.println(5^9); // 12
System.out.println(~-5); // 4
System.out.println(5<<2); // 20
System.out.println(-5<<2); // -20
System.out.println(-5>>2); // -2
System.out.println(-5>>>2); // 1073741822
System.out.println(5>>2); // 1
System.out.println(5>>34); // 1
System.out.println(97=='a'); // true
System.out.println(5.0==5); // true
System.out.println(4>5 ^ 'c'>'a'); // true
System.out.println((int)(char)(byte)-1); // 65535

三. 指定位置设置为1

题目

将参数v的第n位置设为1,然后返回该结果值。

代码结构:

public class Test3_SetOne 
{                 
    public static int setBit(int v, int n){                         
        // 提示:使用 | 及 <<
        // 补全代码 
    }
    public static void main(String[] args) 
    {                       
        int r = setBit(10, 3);
        System.out.println("r: " + r); 
    }
}
答案
public class Test3_SetOne 
{                 
    public static int setBit(int v, int n) {                         
        return v | (1 << n);
    }
    public static void main(String[] args) 
    {                       
        int r = setBit(10, 3);
        System.out.println("r: " + r); 
    }
}

四. 指定位置设置为0

题目

将参数v的第n位置为0,然后返回该结果值。

代码结构:

public class Test4_SetZero 
{                 
    public static int setZero(int v, int n){                      
        // 提示:使用 ~ 及 <<
        // 补全代码 
    }
    public static void main(String[] args)
    {                                 
        int r = setZero(10, 2);
        System.out.println("r: " + r); 
    }
}
答案
public class Test4_SetZero 
{                 
    public static int setZero(int v, int n) {                      
        return v & ~(1 << n);
    }
    public static void main(String[] args)
    {                                 
        int r = setZero(10, 2);
        System.out.println("r: " + r); 
    }
}

五. 代码分析

题目

分析下面几段代码,写出输出结果,最后运行程序进行验证

(1)

int b=5; 
if(b>4)
    System.out.println(b); 
else
    b--;
System.out.println(b);

(2)

{
    int b=5;
    if(b>4) b--; 
    System.out.println("b大于4"); 
    else {
        System.out.println("b不大于4"); 
    }
}

(3)

int age=45; 
if(age>20) {
    System.out.println("年轻人"); 
}else if(age>40){
    System.out.println("中年人"); 
}else if(age>60){
    System.out.println("老年人"); 
}

(4)

int a=80;
switch(a) {
    case 90: {
        System.out.println("优秀"); 
    }
    case 80: {
        System.out.println("一般"); 
    }
    case 60: {
        System.out.println("及格"); 
        break;
    }
    case 50: {
        System.out.println("基础弱"); 
    }
}

(5)

int count=0;
while(count>0); 
{
    System.out.println(count); 
}

(6)

for (int i = 0; i < 5; i++) {
    System.out.print(i);
    i*=0.1; 
}
System.out.println("循环结束");

(7)

for(int i=0;i<3;i++) {
    System.out.println(i); 
    if(i==1) {
        continue; 
    }
    System.out.println("continue后的输出语句"); 
}

(8)

for (int i = 0; i < 3; i++) {
    System.out.println(i);
    if (i == 1) {
        return;
    }
    System.out.println("return后的输出语句"); 
}
答案
public class CodeAnalysis {
    public static void main(String[] args) {
        // (1)
        int b = 5; 
        if (b > 4)
            System.out.println(b); 
        else
            b--;
        System.out.println(b);
        // 输出结果:5 5
        
        System.out.println("----------------");
​
        // (2)
        {
            int b2 = 5;
            if (b2 > 4) b2--; 
            System.out.println("b大于4"); 
            
        }
        // 输出结果:b大于4
        
        System.out.println("----------------");
​
        // (3)
        int age = 45; 
        if (age > 20) {
            System.out.println("年轻人"); 
        } else if (age > 40) {
            System.out.println("中年人"); 
        } else if (age > 60) {
            System.out.println("老年人"); 
        }
        // 输出结果:年轻人
        
        System.out.println("----------------");
​
        // (4)
        int a = 80;
        switch (a) {
            case 90: {
                System.out.println("优秀"); 
            }
            case 80: {
                System.out.println("一般"); 
            }
            case 60: {
                System.out.println("及格"); 
                break;
            }
            case 50: {
                System.out.println("基础弱"); 
            }
        }
        // 输出结果:一般 及格 基础弱
        
        System.out.println("----------------");
​
        // (5)
        int count = 0;
        while (count > 0); 
        {
            System.out.println(count); 
        }
        // 输出结果:0
        
        System.out.println("----------------");
​
        // (6)
        for (int i = 0; i < 5; i++) {
            System.out.print(i);
            i *= 0.1; // i = 0.1 归0
        }
        System.out.println("循环结束");
        // 输出结果:011111....(死循环)
        
        System.out.println("----------------");
​
        // (7)
        for (int i = 0; i < 3; i++) {
            System.out.println(i); 
            if (i == 1) {
                continue; 
            }
            System.out.println("continue后的输出语句"); 
        }
        // 输出结果:0 continue后的输出语句 1 2 continue后的输出语句
        
        System.out.println("----------------");
​
        // (8)
        for (int i = 0; i < 3; i++) {
            System.out.println(i);
            if (i == 1) {
                return;
            }
            System.out.println("return后的输出语句"); 
        }
        // 输出结果:0 return后的输出语句 1
    }
}

六. 九九乘法表

题目

编写一个Java程序,实现如下效果的九九乘法表

答案
public class MultiplicationTable {
    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) + "\t");
            }
            System.out.println();
        }
    }
}

七. 素数问题

题目

请编写一个Java程序,判断101-200之间有多少个素数,并输出所有素数

答案
public class PrimeNumbers {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i <= 200; i++) {
            if (isPrime(i)) {
                System.out.print(i + " ");
                count++;
            }
        }
        System.out.println("\n101-200之间共有" + count + "个素数");
    }
    
    public static boolean isPrime(int num) {
        if (num <= 1) return false;
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) return false;
        }
        return true;
    }
}

八. 月份计算

题目

请编写一个Java程序,实现从键盘输入月份,判断该月份属于哪个季节 【要求】 如果月份不在1-12之间,则报错:输入月份有误 匹配月份,输出对应的季节 12-2冬 3-5春 6-8夏 9-11秋 使用java.util.Scanner类完成

答案
import java.util.Scanner;

public class Season {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = scanner.nextInt();
        
        switch(month) {
            case 12:
            case 1:
            case 2:
                System.out.println("冬季");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;
            default:
                System.out.println("输入月份有误");
        }
    }
}

九. 天数计算

题目

请编写一个Java程序,实现从键盘中输入年份 月份 日期,输出这一天是该年的第几天 【要求】 输入的年份、月份、日期均为数字,不足10的用0x表示,如:1月1日为01 01 输入的年份、月份、日期之间用空格隔开,如:2023 04 27

答案
import java.util.Scanner;

public class DayOfYear {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年份 月份 日期(用空格隔开):");
        int year = scanner.nextInt();
        int month = scanner.nextInt();
        int day = scanner.nextInt();
        
        int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (isLeapYear(year)) {
            days[1] = 29;
        }
        
        int dayOfYear = 0;
        for (int i = 0; i < month - 1; i++) {
            dayOfYear += days[i];
        }
        dayOfYear += day;
        
        System.out.println("这一天是该年的第" + dayOfYear + "天");
    }
    
    public static boolean isLeapYear(int year) {
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }
}

十. 完全数问题

题目

请编写一个Java程序,实现输入一个数,判断其是否为完全数 若一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数。

答案
import java.util.Scanner;

public class PerfectNumber {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num = scanner.nextInt();
        
        if (isPerfectNumber(num)) {
            System.out.println(num + " 是完全数");
        } else {
            System.out.println(num + " 不是完全数");
        }
    }
    
    public static boolean isPerfectNumber(int num) {
        int sum = 0;
        for (int i = 1; i <= num / 2; i++) {
            if (num % i == 0) {
                sum += i;
            }
        }
        return sum == num;
    }
}

十一. 图形输出

题目

请编写一个Java程序,实现下面图形的输出

markdown复制代码   * 
  *** 
 ***** 
******* 
 ***** 
  *** 
   *
答案
public class DiamondPattern {
    public static void main(String[] args) {
        int n = 4; // 控制行数
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n - i; j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        for (int i = n - 1; i >= 1; i--) {
            for (int j = 1; j <= n - i; j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

十二. 分解质因数

题目

请编写一个Java程序,实现输入一个15以内的正整数,对该正整数进行分解质因数,输出该整数与质因数的等式。

答案
import java.util.Scanner;
​
public class PrimeFactorization {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个15以内的正整数:");
        int num = scanner.nextInt();
        
        if (num <= 0 || num > 15) {
            System.out.println("输入的数字不在有效范围内");
        } else {
            System.out.print(num + " = ");
            for (int i = 2; i <= num; i++) {
                while (num % i == 0) {
                    System.out.print(i);
                    num /= i;
                    if (num != 1) {
                        System.out.print(" * ");
                    }
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值