分支和循环练习题

1.  判断用户输入的字符是不是英文字符,如果是输出yes,不是 输出no

/*
分析:
1.用户输入的是字符类型,准备字符类型变量 
	char ch1
2.输入操作 需要使用 Scanner 来完成
	Scanner sc = new Scanner(System.in);
3. if - else 分支结构
*/

import java.util.Scanner;	//导包,使代码具有使用 Scanner 的能力
class Work1 {
	public static void main(String[] args) {
		//创建 Scanner 变量
		Scanner sc = new Scanner(System.in);
		
		//定义一个 char 类型变量,用于储存用户输入的数据
		char ch = '\0';
		
		//提示用户输入
		System.out.println("请输入字符:");
		ch = sc.nextLine().charAt(0);
		
		// if - else 结构判读数据情况
		if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') {
			System.out.println("yes");
		} else {
			System.out.println("no");
		}
	}
}

2.  判断用户输入的工资是不是在5000以上,如果是,输出需要缴税,如果不是,输出不需要缴税

/*
分析:
1.工资使用 float 类型
2.用户输入数据 Scanner 获取
3. if - else 分支结构
*/

import java.util.Scanner;
class Work2 {
	public static void main(String[] args) {
		//创建 Scanner 变量
		Scanner sc = new Scanner(System.in);
		//0.0F 大写 F 是明确告知编译器, 当前 0.0 是一个float 类型数据
		float salary = 0.0F;
		
		System.out.println("请输入你的工资");
		//从键盘上获取用户输入的 float 类型数据
		salary = sc.nextFloat();
		
		if (salary > 5000) {
			System.out.println("需要纳税");
		} else {
			System.out.println("不需要纳税");
		}
	}
}

3.  用户输入一个年份,判断这个年份是不是一个闰年。

/*判断是否是闰年*/
import java.util.Scanner;
class Work3 {
	public static void main(String[] args) {
		int year = 0;
		//准备 Scanner 变量
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入年份");
		//从键盘上获取 int 类型数据
		year = sc.nextInt();
		
		if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
			System.out.println("是闰年");
		} else {
			System.out.println("不是闰年");
		}
	}
}

4.  输入两个整数,打印两数之差的绝对值。

/*
分析:
1.需要定义两个 int 类型变量
2.需要 Scanner 获取两次用户输入数据
3.通过 if 判断输入数据大小关系,处理结果,明确大 - 小
*/

import java.util.Scanner;
class Work4 {
	public static void main(String[] args) {
		int num1 = 0;
		int num2 = 0;
		//创建 Scanner 变量
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入两个整数:");
		num1 = sc.nextInt();
		num2 = sc.nextInt();
		
		if (num1 > num2) {
			System.out.println(num1 - num2);
		} else {
			System.out.println(num2 - num1);
		}
	}
}

5.  输入一个数, 判断是否是偶数,如果是偶数,输出YES,如果是奇数,输出NO

import java.util.Scanner;
class Work5 {
	public static void main(String[] args) {
		int a = 0;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入一个整数");
		a = sc.nextInt();
		
		if (a % 2 == 0) {
			System.out.println("YES");
		} else {
			System.out.println("NO");
		}
	}
}

6.  输入一个人的年份, 检测这个是否是80后,如果是输出YES, 如果不是输出NO(1980-1989年)

import java.util.Scanner;
class Work6 {
	public static void main(String[] args) {
		int year = 0;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入你的出生年份:");
		year  = sc.nextInt();
		
		if (year >= 1980 && year <= 1989) {
			System.out.println("yes");
		} else {
			System.out.println("no");
		}
	}
}

7.  展示0 ~ 100以内的所有偶数

// for 循环执行101次
// if 判断执行 101 次 ,可以通过判断 51 次
class Work7 {
	public static void main(String[] args) {
		for (int i = 0; i <=100; i++) {
			if (i % 2 == 0) {
				System.out.println(i);
			}
		}

/*
方法二  for 循环执行 51 次(更优解)
		for (int i = 0; i <= 100; i += 2) {
			System.out.println(i);
		}
*/
	}
}

8.  展示0 ~ 100以内的所有奇数

class Work8 {
	public static void main(String[] args) {
		for (int i = 1; i <= 100; i += 2) {
	        System.out.println(i);
        }
	}
}

9.  计算1 - 150 的和

class Work9 {
	public static void main(String[] args) {
		int sum = 0;
		
		for (int i = 1; i <= 150; i++) {
			sum += i; 
		}
		System.out.println("1~150的和为:" + sum);

/*优化
        System.out.println((1 + 150) * 150 / 2);
*/

	}
}

10.  逢7过!!! 【100以内的】

/*
逢7过 【100以内的】

1. 7 的倍数	i % 7 == 0
2. 带有 7 的数
	个位为7:i % 10 == 7
	十位为7:i / 10 == 7
*/

class Work10 {
	public static void main(String[] args) {
		
		for (int i = 1; i <= 100; i++) {
			if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) {
				System.out.println("过");
			} else {
				System.out.println(i);
			}
		}
	}
}

11.  多种方法打印26个小写字母

class Work11 {
	public static void main(String[] args) {
		char ch = 'a';
		
		System.out.println("while 循环");
		// while 循环
		while (ch <= 'z') {
			System.out.println(ch);
			ch += 1; //ch++; 
			/*
			ch += 1; 正确,Java编译器可以自行转换类型,特殊功能
			
			ch = ch + 1; 报错
			错误: 不兼容的类型: 从int转换到char可能会有损失 
			数据类型不一致,导致错误
			*/
		}
		
		System.out.println("do while 循环");
		// do - while 循环
		ch = 'a';
		
		do {
			System.out.println(ch);
			ch += 1;
		} while (ch <= 'z');
		
		System.out.println("for 循环");
		// for 循环
		for (ch = 'a'; ch <= 'z'; ch++) {
			System.out.println(ch);
		}
	}
}

12.  例如: 输入 5 8; 计算 5 + 6 + 7 + 8; 输出 26.

/*	
分析:
	1. 用户输入的数据 两个 int 类型数据
	2. 用户提供的 int 类型数据是在控制数据的计算范围,循环范围。
	3. 用户输入数据的较小值是 循环开始,较大值是循环终止条件。
	
[注意]
	需要对用户输入的数据,进行优化调整!!!
*/

import java.util.Scanner;
class Work12 {
	public static void main(String[] args) {
		// 定义两个 int 类型变量
		int num1 = 0;
		int num2 = 0;
		// 创建 Scanner 变量
		Scanner sc = new Scanner(System.in);
		
		// 提示用户输入两个数据
		System.out.println("请输入两个整数:");
		num1 = sc.nextInt();
		num2 = sc.nextInt();
		
		// 处理用户输入数据 num1 和 num2 大小关系,保证 num1 <= num2;
		if (num1 > num2) {
			// 定义一个临时变量,用于数据交换操作
			int temp = num1;
			num1 = num2;
			num2 = temp;
		}
		
		// 利用 for 循环计算得到数据结果
		int ret = 0;
		
		for (int i = num1; i <= num2; i++) {
			ret += i;
		}
		
		System.out.println(ret);
	}
}

13.  整数逆序输出, 例如输入一个整数12345,输出5 4 3 2 1

import java.util.Scanner;
class Work13 {
	public static void main(String[] args) {
		int num = 0;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		num = sc.nextInt();
		
		while (num > 0) {
			int a = num % 10;
			System.out.print(" " + a);
			num /= num ;
		}
	}
}

14.

class Work14 {
	public static void main(String[] args) {
		
		int line = 5;
		
		// 控制当前图像总行数
		for (int i = 1; i <= line; i++) {
			// 控制每一行完成的任务 星星个数 ==> 总行数
			for (int j = 1 ; j <= line; j++) {
				System.out.print("*");
			}
			System.out.println();	//每次循环换行
		}
	}
}

15.

      

class Work15 {
	public static void main(String[] args) {
		
		int line = 5;
		
		for (int i = 1; i <= line; i++) {	
			//每层星星数量 = 行数
			for (int j = 1 ; j <= i; j++) {	
				System.out.print("*");
			}
			System.out.println();	//每次循环换行
		}
	}
}

16.

class Work16 {
	public static void main(String[] args) {
		int line = 5;
		
		// for - i 控制总行数,目前总行数为 5
		for (int i = 1; i <= line; i++) {
			// for - j 控制每一行 空格 个数,总行数 - 当前是第几行
			for (int j = 1; j <= line - i; j++) {
				System.out.print(' ');
			}
			
			// for - k 控制每一行的星星个数,2 * 当前是第几行 - 1
			for (int k = 1; k <= 2 * i - 1; k++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
	}
}

17.

class Work17 {
	public static void main(String[] args) {
		
		//上面5行
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= 5 - i; j++) {
				System.out.print(" ");	
			}
			for (int k = 1; k <= i * 2 - 1; k++) {	// i 是 1 3 5 7 9 的基数
				System.out.print("*");
			}
			//换行
			System.out.println();
		}
		
		//下面4行
		for (int i = 1; i <= 4; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(" ");
			}
			for (int k = 7; k >= i * 2 -1; k--) {	//* 7 5 3 1 
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

18.

class Work18{
	public static void main(String[] args) {
		char[] arr = {'A','B','C','D','E'};	
		//数组下标
		int index1 = 0;//  顺移下标
		int index2 = 0;//  逆移下标	
		// 输出上三角
		for (int i = 0; i < 5; i++){
			// 确定最后一个字符的位置
			for (int j = 0; j < 5 + i; j++) {   
				//判断第一个字符出现的位置
				if (j < 4 - i){   
					System.out.print(' ');
				} else if (j <= 4){   
				    //顺序打印,下标右移
					System.out.print(arr[index1++]);
					//顺移结束,下标需左移
					index2 = index1 - 1; 
				} else {   
					// 逆序打印,下标左移
					System.out.print(arr[--index2]); 
				}
			}
			//一行结束,下标归 0
			index1 = 0;
			index2 = 0;
			System.out.print('\n');
		}
			//输出下三角,有 4 行
		for (int i = 0; i < 4; i++){
			// 确定最后一个字符的位置
			for (int j = 0; j < 8 - i; j++) {   
				//判断第一个字符出现的位置
				if (j < i + 1){   
					System.out.print(' ');
				} else if (j <= 4){   
				    //顺序打印,下标右移
					System.out.print(arr[index1++]);
					//顺移结束,下标需左移
					index2 = index1 - 1; 
				} else {   
					// 逆序打印,下标左移
					System.out.print(arr[--index2]); 
				}
			}
			//一行结束,下标归 0
			index1 = 0;
			index2 = 0;
			System.out.print('\n');
		}
	}
}

19.

class Work19{
	public static void main(String[] args) {
		//打印行数
		int raw = 7;
		
		//对称列
		int center = raw / 2;
		
		for (int i = 0; i < raw; i++) {
			for (int j = 0; j < raw; j++) {
				if (i <= center){
					//上部分星号打印判断,以对称列向两边扩展
					if (j - i == center || j + i == center) {
						System.out.print('*');
					} else {
						System.out.print('#');
					}
				} else {
					//打印下部分星号打印判断,以对称列向两边扩展
					if (i - j == center || i + j  == raw + center - 1) {
						System.out.print('*');
					} else {
						System.out.print('#');
					}
				}
			}
			System.out.print('\n');
		}
	}
}

20. 自己完成一个爱心

class Work20 {
	public static void main(String[] args) {
		for (float y = (float) 1.5; y > -1.5; y -= 0.1) { 
			for(float x = (float) -1.5; x < 1.5; x += 0.05) { 
				float a = x  * x + y * y - 1; 
				if((a * a * a - x * x * y * y * y) <= 0.0) { 
					System.out.print("*"); 
				} else {
					System.out.print(" ");
				}	 
			} 
			System.out.println(); 
		} 
	}
}