【JAVA-C】流程控制 for 编程题

发布于:2022-12-21 ⋅ 阅读:(410) ⋅ 点赞:(0)

目录

1.编写程序从1循环到150,并在每行打印一个值

2. 输入两个正整数m和n,求其最大公约数和最小公倍数。

3.遍历100以内的偶数,输出所有偶数的和,输出偶数的个数

4.输出999中所有的水仙花数


1.编写程序从1循环到150,并在每行打印一个值

  • 在每个3的倍数行上打印出“foo”,
  • 在每个5的倍数行上打印“biz”,
  • 在每个7的倍数行上打印输出“baz”。
class ForNumber{
    public static void main(String[] args){
        for(int i =1; i<=150; i++){
            System.out.print(i + " ");
            if(i % 3 == 0){System.out.print("foo ");}
            if(i % 5 == 0){System.out.print("biz ");}
            if(i % 5 == 0){System.out.print("baz ");}
            //换行
			System.out.println();}
        }
}

2. 输入两个正整数mn,求其最大公约数和最小公倍数。

  • 比如:1220的最大公约数是4,最小公倍数是60说明:break关键字的使用

// 最大公约数:从m,n中较小的那个数开始循环递减,直到能同时整除m和n
// 最小公倍数:从m,n中较大的那个数开始循环递增,直到可以同时被m和n整除,输出最小公倍数

import java.util.Scanner;
public class Convention_multiples{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入第一个正整数m:  ");
        int m = scan.nextInt(); 
        System.out.println("请输入第二个正整数n:  ");
        int n = scan.nextInt();
        
        //获取两个数的较小值-穷举法
        int min = (m <= n)? m :n;       
        for(int i = min; i>=1; i--){      
        if (m % i == 0 && n % i == 0){         
            System.out.print("最大公因数为: " + i);
            break; //一旦在循环中执行到break,就跳出循环
            }
        }

        //获取两个数的较大值-穷举法
        int max = (m >= n)? m :n;       
        for(int i = max; i <= m*n ; i++){      
        if (i % m == 0 && i % n == 0){         
            System.out.print("最小公倍数为: " + i);
            break; //一旦在循环中执行到break,就跳出循环
            }
        }}                  
}
// 最大公约数:从m,n中较小的那个数开始循环递减,直到能同时整除m和n
// 最小公倍数:从m,n中较大的那个数开始循环递增,直到可以同时被m和n整除,输出最小公倍数
// 辗转相除法也叫欧几里得算法:
     //实际,m,n只要余数不是0,
     //那么下一个式子就变成上一个式子的除数作为下一个的被除数,上一个余数变为下一个的除数。
// 两个数的最小公倍数是两个数的积除以这两个数的最大公约数。

import java.util.Scanner;
public class Convention_multiples{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入第一个正整数m:  ");
        int m = scan.nextInt(); 
        System.out.println("请输入第二个正整数n:  ");
        int n = scan.nextInt();

        int p  = divisor( m, n);
        System.out.println("最小公倍数为" + m*n/p);
        }

    public static int divisor(int m, int n){
        if (n > m){
            int temp = m;
            m = n;
            n = temp;} // 确保大数%小数,m为大,n为小
        if(m % n == 0){
            System.out.print("最大公因数为" + n);
            return n;}
        else{return divisor(n, m%n);}
    }
}

3.遍历100以内的偶数,输出所有偶数的和,输出偶数的个数

class ForTest {
	public static void main(String[] args) {

		int sum = 0;//记录所有偶数的和
		int count = 0;//记录偶数的个数
		for(int i = 1;i <= 100;i++){			
			if(i % 2 == 0){
				System.out.println(i);
				sum += i;
				count++;
			}
			//System.out.println("总和为:" + sum);
		}

		System.out.println("总和为:" + sum);
		System.out.println("个数为:" + count);
	}
}
//do-while循环的使用

class DoWhileTest {
	public static void main(String[] args) {
		
		//遍历100以内的偶数,并计算所有偶数的和及偶数的个数
		int num = 1;
		int sum = 0;//记录总和
		int count = 0;//记录个数
		do{
			
			if(num % 2 == 0){
				System.out.println(num);
				sum += num;
				count++;
			}

			num++;

		}while(num <= 100);
		

		System.out.println("总和为:" + sum);
		System.out.println("个数为:" + count);

		//*************体会do-while至少执行一次循环体***************
		int number1 = 10;
		while(number1 > 10){
			System.out.println("hello:while");
			number1--;
		}

		int number2 = 10;
		do{
			System.out.println("hello:do-while");
			number2--;
		}while(number2 > 10);

	}
}

4.输出999中所有的水仙花数

  • 所谓水仙花数是指一个3位数,其各个位上数 字立方和等于其本身。
  • 例如: 153 = 1*1*1 + 3*3*3 + 5*5*5
class AriExer {
	public static void main(String[] args) {
		
		for(int i = 0 ; i<= 999; i++){
            int bai = i / 100;
		    int shi = i % 100 / 10;//int shi = num / 10 % 10;
		    int ge = i % 10;
            int sum = bai*bai*bai+shi*shi*shi+ge*ge*ge;
            if (sum == i){System.out.println(i );}                    
        }			
	}
}

本文含有隐藏内容,请 开通VIP 后查看