JavaSE第3天循环结构随机数 练习题

文章目录

  • 训练案例
    • 1. 训练案例1 使用for循环,求出1-100之间的奇数之和.
    • 2. 训练案例2 求出1到100之间的既是3的倍数又是5倍数的数字之和
    • 3. 训练案例3 从键盘上录入一个大于100的三位数,求出100到该数字之间满足要求的数字之和
    • 4. 训练案例4 打印菜单
    • 5. 训练案例5 2个一行打印水仙花数
    • 6. 训练案例6 系统产生一个1-100之间的随机数,请猜出这个数据
  • 扩展案例
    • 1. 训练案例1 折叠多少次,可以折成珠穆朗玛峰的高度
    • 2. 训练案例2
    • 3. 训练案例3
    • 4. 训练案例4

训练案例

1. 训练案例1 使用for循环,求出1-100之间的奇数之和.

1.1. 训练考核知识点
if语句;
for循环语句;
1.2. 训练描述
使用for循环,求出1-100之间的奇数之和.
1.3. 操作步骤描述
1.定义一个变量,用来记录奇数的累加和;
2.for循环得到1到100之间的每个数字;
3.在for循环里面,判断这个数字是否为奇数;
4.如果为奇数,就与变量累加;
5.for循环结束后,打印累加和;

public class Test01 {
	public static void main(String[] args) {
	int ji = 0;
	int sum = 0;
	for (int i = 1; i <= 100; i++) {
		ji = i % 2 ==0?0:i;
		sum+=ji;
	}
	System.out.println("1-100之间的奇数之和:"+sum);	
	}
}

2. 训练案例2 求出1到100之间的既是3的倍数又是5倍数的数字之和

2.1. 训练考核知识点
选择结构;
循环结构;
2.2. 训练描述
求出1到100之间的既是3的倍数又是5倍数的数字之和.
2.3. 操作步骤描述
1.定义一个变量,记录累加求和
2.循环遍历1到100之间的每个数字
3.再循环中判断该数是否为既是3的倍数又是5倍数
4.如果满足条件对该数进行累加求和
6.循环结束后打印求和的变量

public class Test02 {
	public static void main(String[] args) {
	int j = 0;
	int sum = 0;
	for (int i = 1; i <= 100; i++) {
		j = (i % 3 ==0 & i %5 ==0)?i:0;
		sum+=j;
		System.out.println(j);
	}
	System.out.println("1-100之间的奇数之和:"+sum);	
	}
}

3. 训练案例3 从键盘上录入一个大于100的三位数,求出100到该数字之间满足要求的数字之和

3.1. 训练考核知识点
选择结构;
循环结构;
3.2. 训练描述
从键盘上录入一个大于100的三位数,求出100到该数字之间满足如下要求的数字之和:
1.数字的个位数不为7;
2.数字的十位数不为5;
3.数字的百位数不为3;

在这里插入代码片

3.3. 操作步骤描述
1.从键盘上录入一个三位数;
2.定义一个变量,用来记录满足条件的数字累加之和;
3.使用for循环获取100到该数字之间的所有数字;
4.得到当前拿到的这个数的个位数,十位数,百位数;
5.判断个位数不为7,十位数不为5,百位数不为3;
6.如果满足条件就累加;
7.循环结束后打印累加之和;

public class Test03 {
	public static void main(String[] args) {
	int j = 0;
	int sum = 0;
	java.util.Scanner input = new java.util.Scanner(System.in);
	System.out.println("从键盘上录入一个大于100的三位数");
	int a = input.nextInt();
	int bai = a/100;
	int shi = a%100/10;
	int ge = a%100%10;

	for (int i = 100; i < a; i++) {
		j = ge!=7 & shi!=5 & bai!=3 ?i :0;
		sum += j;	
	} 
	System.out.println("100到该数字之间满足要求的数字之和:"+sum);
	}
}

4. 训练案例4 打印菜单

4.1. 训练考核知识点
switch语句;
循环结构;
4.2. 训练描述
请按如下要求编写程序,打印菜单:
1.从键盘上录入一个1到5的数字;
2.当数字为1时打印菜单"新建";
当数字为2时打印菜单"打开文件";
当数字为3时打印菜单"保存";
当数字为4时打印菜单"刷新";
当数字为5时打印菜单"退出",并退出程序;
此行代码可以终止java程序运行: System.exit(0);
4.3. 操作步骤描述
1.从键盘上录入一个三位数;
2.使用switch语句判断录入的数字为哪个菜单编号,并打印对应的菜单名称;
3.使用while循环,重复执行1,2两个步骤;

public class Test04 {
	public static void main(String[] args) {
		java.util.Scanner input = new java.util.Scanner(System.in);
		while (true) {
			System.out.println("从键盘上录入一个1到5的数字:");
			int j = input.nextInt();

			switch (j) {
			case 1:
				System.out.println("新建");

				break;
			case 2:
				System.out.println("打开文件");
				break;
			case 3:
				System.out.println("保存");
				break;
			case 4:
				System.out.println("刷新");
				break;
			case 5:
				System.out.println("退出");
				System.exit(0);

			default:
				System.out.println("输入错误");
				break;
			}
		}
	}
}

5. 训练案例5 2个一行打印水仙花数

5.1. 训练考核知识点
循环结构;
算数运算符;
5.2. 训练描述
请按如下要求编写程序,打印菜单:
2个一行打印水仙花数(中间用空格隔开),最后打印水仙花输的总个数

5.3. 操作步骤描述
A:定义统计变量,初始化值是0
B:获取三位数,用for循环实现
C:获取每个位上的数据
D:判断数据是否是水仙花数
如果是,就统计变量++
打印该水仙花数(不换行,数字后面加空格)
判断总数量是否是2的倍数
如果是就打印换行
E:输出统计变量

//水仙花数是指一个 n 位数(n≥3 ),
//它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)
public class Test05 {
	public static void main(String[] args) {
		int sum = 0;
	
		
	
		for (int i = 100; i <= 999; i++) {
			int bai = i/100;
			int shi = i%100/10;
			int ge = i%100%10;
			int j = ge*ge*ge +shi*shi*shi + bai*bai*bai;

			if (i == j) {
				System.out.print(i+" ");
				sum++;
				if (sum%2 ==0){
					System.out.println();
				}
			}		
		}
		System.out.println("水仙花输的总个数:"+sum);
	
	}
}

6. 训练案例6 系统产生一个1-100之间的随机数,请猜出这个数据

6.1. 训练考核知识点
循环结构;

6.2. 训练描述
猜数字小游戏
系统产生一个1-100之间的随机数,请猜出这个数据是多少?

6.3. 操作步骤描述
A:系统产生一个1-100之间的随机数
Random r = new Random();
int number = r.nextInt(100)+1;
B:键盘录入我们要猜的数据
C:比较这两个数据,看我们猜的是否正确
如果大了,提示:你猜的数据大了
如果小了,提示:你猜的数据小了
如果相等,提示:恭喜你,猜中了
D:为了实现多次猜数据,我们就要加入循环,而我们又不知道猜多少次能中。怎么办呢?
死循环:while(true) {…}
for(; {…}

public class Test06 {
	public static void main(String[] args) {
		java.util.Scanner input = new java.util.Scanner(System.in);
		java.util.Random r = new java.util.Random();
		int i = r.nextInt(100)+1;
		System.out.println(i);
		System.out.println("請輸入一个1-100之间的随机数");
		wc :while(true){
			int a = input.nextInt();
			if(a == i){
				System.out.println("恭喜答对了");
				break wc;
			}else if(a<i){
			System.out.println("答错了,你猜的数据小了,请重新输入");
		
			}else if(a>i){
				System.out.println("答错了,你猜的数据大了,请重新输入");
		
				}
			}
		}
}

扩展案例

1. 训练案例1 折叠多少次,可以折成珠穆朗玛峰的高度

1.1. 训练描述
分析以下需求,并用代码实现:
1.珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.0001米。
2.请问,我折叠多少次,可以折成珠穆朗玛峰的高度。

public class TZ01 {
	public static void main(String[] args) {
		double high = 0.001;
		int i=0;
		while(high<=8488) {
			high +=high;
			i++;
		}
		System.out.println("我折叠"+i+"次,可以折成超过珠穆朗玛峰的高度"+",高度:"+high);
	}
}

2. 训练案例2

2.1. 训练描述
按要求打印数字
2.2. 操作步骤描述
1.打印1到100之内的整数,但数字中包含9的要跳过
2.每行输出5个满足条件的数,之间用空格分隔
3.如:1 2 3 4 5

public class TZ02 {
	public static void main(String[] args) {
		int sum=0;
		for (int i = 1; i <= 100; i++) {
			sum++;
			int ge = i%10;
			int shi = i/10;
			if(ge==9 || shi==9){
				continue;
			}else{
				if(sum%5==0){
					System.out.println();
				}
				System.out.print(i+"	");
			}			
		}
	}
}

3. 训练案例3

3.1. 训练描述
按要求打印数字
3.2. 操作步骤描述
1.按照从大到小的顺序输出四位数中的个位+百位=十位+千位(3553,2332,1166,8228,3773)的数字及个数
2.每行输出5个满足条件的数,之间用空格分隔
3.如:9999 9988 9977 9966 9955

public class TZ03 {
	public static void main(String[] args) {
		int sum=0;
		for(int i = 9999; i >= 1000; i--) {			
			int ge = i%10;
			int shi = i%1000%100/10;
			int bai = i%1000/100;
			int qian = i/1000;
			int a = (ge+bai);
			int b = (shi +qian);
			if(a == b){
				sum++;
				if(sum%5==0){
					System.out.println();
				}else{
					System.out.print(i+"	");
				}
				}
			}		
		}
	}

4. 训练案例4

4.1. 训练描述
循环录入某学生的5门课程的成绩并计算平均分。如果某分数录入为负,则停止录入并提示录入错误。
4.2. 操作步骤描述
1.创建键盘录入对象
2.定义int类型的变量sum(总分)和avg(平均分),两个变量的初始值位0,String类型的变量name,表示学员姓名
3.定义boolean类型的变量flag(表示该学生的5门成绩是否正确录入,如果有一个为负值,则负值为true,表示录入错误),初始值为false
4.利用for循环,录入5个成绩
(1)判断当前的成绩如果小于0,flag赋值为true,终止for循环
(2)否则,如果当前录入的成绩>=0,累加求和
5.打印结果
(1)如果flag为true,打印录入错误
(2)否则如果flag为false,打印总分和平均分

public class TZ04 {
	public static void main(String[] args) {
		int avg = 0;
		int sum = 0;
		java.util.Scanner input = new java.util.Scanner(System.in);
		for (int i = 1; i <=5; i++) {
			System.out.println("从键盘上录入学生的第"+i+"门课程的成绩:");
			int a = input.nextInt();
			if(a<0){
				System.out.println("分数录入为负,停止录入");
				System.exit(0);
			}else{
				sum += a;
			}
		}
		avg = sum/5;
		System.out.println("总分:"+sum+"和平均分"+avg);
		
	}
}

你可能感兴趣的:(java练习)