目录
1.switch(){}结构中,括号中可使用的数据类型不能是(A D )。
1.编写程序数一下 1到 100 的所有整数中出现多少个数字9
2.KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
3.完成猜数字游戏 ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序。
Random random = new Random();int toGuess = random.nextInt(100);产生[0-100)之间的随机数
4.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。
5.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
7.创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。
要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算。
一.选择题(多选题)
1.switch(){}结构中,括号中可使用的数据类型不能是(A D )。
A.long B.int C.short D.float
long float double boolean 都不可以作为switch的参数
除了这些基本数据类型,后续说道的枚举,String也可以作为Switch的参数
故选择A D.
二.编程题
1.编写程序数一下 1到 100 的所有整数中出现多少个数字9。
【思路】
本题主要考察,个位的9怎么判断,十位的9怎么判断?另外99是两个9。
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 100; i++) {
if(i % 10 == 9) {//判断个位的9
count++;
}
if(i/10 == 9) {
count++;//判断十位的9
}
}
System.out.println(count);
}
2.KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。
输入:5
输出: * *
* *
*
* *
* *
【思路】

mport java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNextInt()) {
int n = scan.nextInt();
for(int i = 0;i < n;i++) {
for(int j = 0;j < n;j++) {
if(i == j) {
System.out.print("*");
}else if( i+j+1 == n) {
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
}
3.完成猜数字游戏 ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序。
【思路】
Random random = new Random();
int toGuess = random.nextInt(100);产生[0-100)之间的随机数
public static void main(String[] args) {
Random random = new Random(); // 默认随机种子是系统时间
Scanner sc = new Scanner(System.in);
int toGuess = random.nextInt(100);
//System.out.println("toGuess: " + toGuess);
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;
}
}
sc.close();
}
4.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。
【思路】
1. 从上述表达式可以分析出
a. 该表达式主要由100项,基数项为正,偶数项为负
2. 设置一个循环从1~100,给出表达式中的每一项:1.0/i, 注意此处不能使用1,否则结果全部为0
然后使用flag标记控制奇偶项,奇数项为正,偶数项为负
然后将所有的项相加即可
public static void main(String[] args) {
double sum = 0;
int flg = 1;
for (int i = 1; i <= 100; i++) {
sum += 1.0/i * flg;
flg = -flg;
}
System.out.println(sum);
}
5.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序。
【思路】
本题注意考察,字符串怎么比较相同?使用方法equals。具体的原理会在String章节进行详细讲解。此处只是简单使用。
public static void main11(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = 3;
while (count != 0) {
System.out.println("请输入你的密码:");
String password = scanner.nextLine();
//if(password == "123") { 这个判断相等是错误的,具体原因后续String章节进行讲解
if(password.equals("123")) {
System.out.println("登录成功!");
break;
}else {
count--;
System.out.println("你还有"+count+" 次机会!");
}
}
}
6.输出一个整数的每一位,如:123的每一位是3,2,1。
【思路】
本题主要考虑,如何获取一个数字的每一位:
123 % 10 = 3
123/10=12 12%10=2
12/10=1 1%10= 1
public static void main(String[] args) {
int n = 123;
while (n != 0) {
System.out.println(n % 10);
n /= 10;
}
}
7.创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。
要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算。
public static int max2(int a,int b) {
return a > b ? a:b;
}
public static int max3(int a,int b,int c) {
int max = max2(a,b);
return max > c ? max : c;
}
public static void main(String[] args) {
System.out.println(max3(2, 5, 1));
}
8.求斐波那契数列的第n项。(迭代实现)
【思路】
斐波那契数列定义为:1 1 2 3 5 8 13 21 我们可以看到,从第3项开始,都等于前一项+前一项的前一项的和。
3=1+2
5+2+3
13 = 5+8
我们可以先定义f1保存第一项的值,f2保存第2项的值,f3保存第3项的值。
每次算法一个f3,就同步更新f1和f2的值。
/**
* 求菲薄那切数列的第n项
* @param n
* @return
*/
public static int fib(int n) {
if(n == 1 || n == 2 ) {
return 1;
}
int f1 = 1;
int f2 = 1;
int f3 = 1;
for (int i = 3; i <= n; i++) {
f3 = f1+f2;
f1 = f2;
f2 = f3;
}
return f3;
}

2829

被折叠的 条评论
为什么被折叠?



