一. 代码观察
题目
观察以下代码
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(" * "); } } } } } }