java流程控制相关题汇总

package com.ghl.testDemo;

import java.util.Scanner;

import org.junit.Test;

public class TestDemo {

	/**
	 * 打印九九乘法表 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5
	 * 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7
	 * 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40
	 * 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72
	 * 9*9=81
	 */
	@Test
	public void test1() {
		for (int i = 1; i <= 9; i++) {// 一共有9行
			for (int j = 1; j <= i; j++) {// 没行有i列
				System.out.print(i + "*" + j + "=" + i * j + "\t");
			}
			System.out.println();
		}
	}

	/**
	 * 打印100以内所有的质数 质数:在大于1的自然数中,除了1和它本身以为不在有其他的因数,没法被其他自然数整除的数 结果:2 3 5 7 11 13 17
	 * 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
	 */
	@Test
	public void test2() {
		boolean flag = false;
		for (int i = 2; i <= 100; i++) {// 遍历100以内的数
			for (int j = 2; j < Math.sqrt(i); j++) {// 如何判断i是否为一个质数
				if (i % j == 0) {
					flag = true; // 如果能整除 那么他就不是质数
					break;
				}
			}
			if (flag == false) {
				System.out.print(i + " ");
			}
			flag = false;
		}

	}

	/**
	 * 从键盘分别输入年、月、日,判断这一天是当年的第几天。
	 */
	@Test
	public void test3() {
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入year:");
		int year = scanner.nextInt();
		System.out.println("输入month:");
		int month = scanner.nextInt();
		System.out.println("输入day:");
		int day = scanner.nextInt();
		int sumDay = 0;
		switch (month) {
		case 12:
			sumDay += 30;
		case 11:
			sumDay += 31;
		case 10:
			sumDay += 30;
		case 9:
			sumDay += 31;
		case 8:
			sumDay += 31;
		case 7:
			sumDay += 30;
		case 6:
			sumDay += 31;
		case 5:
			sumDay += 30;
		case 4:
			sumDay += 31;
		case 3:
			if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
				sumDay += 29;
			else
				sumDay += 28;
		case 2:
			sumDay += 31;
		case 1:
			sumDay += day;

		}
		System.out.println(year + "年" + month + "月" + day + "日是今年的第" + sumDay + "天");

	}

	/**
	 * 输出从1到100之间所有的整数;
	 */
	@Test
	public void test4() {
		for (int i = 1; i <= 100; i++) {
			System.out.println(i);
		}
	}

	/**
	 * 输出从1到100之间所有的奇数;
	 */
	@Test
	public void test5() {
		for (int i = 1; i <= 100; i++) {
			if (i % 2 != 0) {
				System.out.println(i);
			}
		}
	}

	/**
	 * 输出从1到100之间所有的偶数
	 */
	@Test
	public void test6() {
		for (int i = 1; i <= 100; i++) {
			if (i % 2 == 0) {
				System.out.println(i);
			}
		}
	}

	/**
	 * 输出从1到100之间所有不能被3整除的数;并输出这些整数的和 结果:3367
	 */
	@Test
	public void test7() {
		int sum = 0;
		for (int i = 1; i <= 100; i++) {
			if (i % 3 != 0) {
				sum = sum + i;
			}

		}
		System.out.println(sum);
	}

	/**
	 * 输入长和宽,输出长方形,如:输入4和3, 将输出如下图形 
	 * #### 
	 * #### 
	 * ####
	 */
	@Test
	public void test8() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入长:");
		int chang = sc.nextInt();
		System.out.println("请输入宽:");
		int kuan = sc.nextInt();

		for (int i = 0; i <= kuan; i++) {
			for (int j = 0; j < chang; j++) {
				System.out.print("#");
			}
			System.out.println();
		}

	}

	/**
	 * 输入高度,输出直角三角形。如:输入4, 将输出如下图形 
	 * # 
	 * ## 
	 * ### 
	 * ####
	 */
	@Test
	public void test9() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入高度:");
		int height = sc.nextInt();
		for (int i = 0; i <= height; i++) {
			for(int j=0;j n)? m : n;
		//获取m和n的较小值
		int min = (m < n)? m : n;

		//求m和n的最大公约数
		for(int i = min;i >= 1;i--){
			if( m % i == 0 && n % i == 0){
				System.out.println("m和n的最大公约数是:" + i);
				break;
			}
		}
		//求m和n的最小公倍数
		for(int i = max;i <= m * n;i++){
			if( i % m == 0 && i % n == 0){
				System.out.println("m和n的最小公倍数是:" + i);
				break;
			}
		}
	}

	/**
	 * 根据用于指定月份,打印该月份所属的季节。
		//3,4,5 春季 6,7,8 夏季  9,10,11 秋季 12, 1, 2 冬季
	 */
	@Test
	public void test12() {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入月份");
		int month = sc.nextInt();
		switch(month){
			case 3:
			case 4:
			case 5:
				System.out.println(month+"春季");
				break;
			
			case 6:
			case 7:
			case 8:
				System.out.println(month+"夏季");
				break;
			case 9:
			case 10:
			case 11:
				System.out.println(month+"秋季");
				break;
			case 12:
			case 1:
			case 2:
				System.out.println(month+"冬季");
				break;
			default:
				System.out.println("nono");

		}
	}

	/**
	 * 打印1~100之间 6的倍数的个数
	 * count=16
	 */
	@Test
	public void test13() {
		int count = 0;
		for(int x=1; x<=100; x++){			
			if(x%6==0)
				//System.out.println("x="+x);
				count++;
		}
		System.out.println("count="+count);
	}

	/**
	 * 求出1~100之间,既是3又是7的倍数的自然数出现的次数?
	 * count=4
	 */
	@Test
	public void test14() {
		int count = 0;
		for(int x=1; x<=100; x++){			
			if(x%3==0&&x%7==0)
				//System.out.println("x="+x);
				count++;
		}
		System.out.println("count="+count);
	}

	
	/**
	 * 3000米长的绳子,每天减一半。问多少天这个绳子会小于5米?不考虑小数。
	 * 10天
	 */
	@Test
	public void test15() {
	int	day = 0;
		for(int x=3000; x>=5; day++)
		{
			x = x/2;
		}
		System.out.println(day+"天");
	}
	/**
	 * 判断给定的某个年份是否是闰年。
	 * 若某个年份能被4整除但不能被100整除,则是闰年。若某个年份能被400整除,则也是闰年。
	 */
	@Test
	public  void test16() {
		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(year+"是润年");
		}
		else {
			System.out.println(year+"不是润年");
		}
	}
	
	/**
	    *
	   * *
	  * * *
	 * * * *
	* * * * *
	 * * * *
	  * * *
	   * *
	   * 
	 */
	@Test
	public  void test17() {
		//上半部分
		for(int i = 0;i < 5;i++){
			//输出“-”
			for(int j = 0;j < 4-i;j++){
				System.out.print(" ");
			}

			//输出“* ”
			for(int k = 0;k < i+1;k++){
				System.out.print("* ");
			}
			System.out.println();
		}
		//下半部分
		for(int i = 0;i < 4;i++){
			for(int j = 0;j < i+1;j++){
				System.out.print(" ");
			}
			for(int k = 0;k < 4-i;k++){
				System.out.print("* ");
			}
			System.out.println();

		}
	}
	
	/**
	 * 找出1000以内的所有完数
	 * 一个数如果恰好等于它的因子之和,这个数就称为"完数"。
	 * 6 28 496
	 */
	@Test
	public  void test18() {
		 int count=0;
		int factor=0;
		for (int i = 1; i <= 1000; i++) {
			for (int j = 1; j < i; j++) {
				if(i%j==0)
					factor+=j;
			} 
			if(factor == i){
				System.out.println(i);
				count++;
			}
			factor=0;
		}
		System.out.println("1-1000之间的完数个数为:"+count);
	}
	
	/**
	 * 输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
		例如: 153 = 1*1*1 + 3*3*3 + 5*5*5 
		输出结果:
			此数值为满足条件的水仙花数:153
			此数值为满足条件的水仙花数:370
			此数值为满足条件的水仙花数:371
			此数值为满足条件的水仙花数:407
	 */
	@Test
	public  void test19() {
		for(int i = 100;i < 1000;i++){//实现所有的三位数的一个遍历
			int j1 = 0;
			int j2 = 0;
			int j3 = 0;
			j1 = i / 100;//百位
			j2 = (i - 100*j1) / 10;//十位
			j3 = i - 100*j1 - 10*j2;//个位

			if( i == j1*j1*j1 + j2*j2*j2 + j3*j3*j3){
				System.out.println("此数值为满足条件的水仙花数:" + i);
			}
		}
	}
}

你可能感兴趣的:(Java基础)