Java流程控制阶段的一些经典练习题

1、对学生成绩划分等级,如果学生成绩在60分以下则成绩等级为F,如果成绩在60~70分之间则评定为D,如果成绩在70~80分之间则评定为C,如果学生成绩在80~90分之间的则评定为B,如果学生成绩在90~100分之间则评定为A,如果学生成绩为100分,则评定为S级。

public class One_Performance {
    public static void main(String[] args) {
        /*
        对学生成绩划分等级,如果学生成绩在60分以下则成绩等级为F,
        如果成绩在60~70分之间则评定为D,如果成绩在70~80分之间则
        评定为C,如果学生成绩在80~90分之间的则评定为B,如果学生成
        绩在90~100分之间则评定为A,如果学生成绩为100分,则评定为
        S级。
        * */
        //打印成绩
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入成绩:");
        int score = sc.nextInt();
        if(score>0&&score<60){
            System.out.println("成绩为F");
        }else if(score<70){
            System.out.println("成绩为D");
        }else if (score<80){
            System.out.println("成绩为C");
        }else if (score<90){
            System.out.println("成绩为B");
        }else if (score<100){
            System.out.println("成绩为A");
        }else if (score == 100){
            System.out.println("成绩为S");
        }
    }
}

2、如果是性别(sex)为true并且薪水大于8000就输出高富帅,否则就是穷属丝,如果sex为false,并且薪水大于8000,输出白富美否则就是女席丝

public class Two_Sex {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("性别为:");
        boolean sex = sc.nextBoolean();//true为男  false为女
        System.out.println("薪资为:");
        double salary = sc.nextDouble();
        if (sex == true){
            if (salary > 8000){
                System.out.println("高富帅");
            }else {
                System.out.println("穷屌丝");
            }
        }else {
            if (salary > 8000){
                System.out.println("白富美");
            }else {
                System.out.println("女屌丝");
            }
        }
    }
}

3、输入1-7,判断是周几,并且输出"今天是星期 * "

public class Three_Week {
    public static void main(String[] args) {
        // switch-case
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        int week = sc.nextInt();
        switch (week){
            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("今天是周五");
                break;
            case 6:
                System.out.println("今天是周六");
                break;
            case 7:
                System.out.println("今天是周日");
                break;
            default:
                System.out.println("输入的日期有误");
        }


    }
}

4、根据指定的月份,打印该月份所属的季节。

(12、1、2为冬季;3、4、5为春季;6、7、8为夏季、9、10、11位秋季)

public class Four_Season {
    public static void main(String[] args) {
        //根据指定的月份,打印该月份所属的季节。
        //​(12、1、2为冬季;3、4、5为春季;6、7、8为夏季、9、10、11位秋季)
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入月份:");
        int mouth = sc.nextInt();
        switch(mouth){
            case 12:
            case 1:
            case 2:
                System.out.println("冬季");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println("春天");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏天");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋天");
                break;
            default:
                System.out.println("输错了,重新输入");
        }
    }
}

5、指定一个年月日日期,判断这一天是这一年中的第几天?【难】

  1. public class Five_WhichDay {
        public static void main(String[] args) {
            /*
            * 指定一个年月日日期,判断这一天是这一年中的第几天?
            * */
            Scanner sc = new Scanner(System.in);
            System.out.println("输入年:");
            int year1 = sc.nextInt();
            System.out.println("输入月:");
            int month = sc.nextInt();
            System.out.println("输入日:");
            int day = sc.nextInt();
            int today = 0;//today是该年中的第几天
            //选择结构/分支结构 if else/switch case
            if(month<1||month>12&&day>31||day<1){//合法性
                System.out.println("你给定的值不合法,请从新输入");
            }
            if (month==1){
                today = day;
            }else if(month==2){
                today=31+day;
            }else if(month == 3){
                today = 31+day+28;
            }else if(month == 4){
                today = 31*2+28+day;
            }else if(month==5){
                today=31*2+30+28+day;
            }else if(month==6){
                today=31*3+30+28+day;
            }else if(month==7){
                today=31*3+30*2+28+day;
            }else if(month==8){
                today=31*4+30*2+28+day;
            }else if(month==9){
                today=31*5+30*2+28+day;
            }else if(month==10){
                today=31*5+30*3+28+day;
            }else if(month==11){
                today=31*6+30*3+28+day;
            }else if(month==12){
                today=31*6+30*4+28+day;
            }
            //输出该天是该年中的第几天
            if(year1%4==0&&year1%100!=0||year1%400==0){
                if (month==1){
                    System.out.println(year1+"/"+month+"/"+day+"是该年的第"+today+"天");
                }else {
                    System.out.println(year1+"/"+month+"/"+day+"是该年的第"+(today+1)+"天");
                }
            }else {
                System.out.println(today);
            }
            /*if(month<1||month>12&&day>31||day<1){
                System.out.println("你给定的值不合法,请从新输入");
            }
            int sumDay = 0;//从一月开始到当前月前一个月的所有月份的天数的累加和
            int dayOfMonth = 0;//某一月的天数
            for (int i = 1;i < month;i++){//遍历从一月开始到当前月前一个月的所有月份
                switch (i){
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        dayOfMonth = 31;
                        break;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        dayOfMonth = 30;
                        break;
                    case 2:
                        if (year1%4==0&&year1%100!=0||year1%400==0){
                            dayOfMonth = 29;
                        }else {
                            dayOfMonth = 28;
                        }
                        break;
                    default:
                        break;
                }
                sumDay += dayOfMonth;
            }
            System.out.println(year1+"/"+month+"/"+day+"是该年的第"+(sumDay+day)+"天");*/
        }
    }

6、打印一个九九乘法表

public class Six_Table {
    public static void main(String[] args) {
        //九九乘法表
        //1.外层循环控制趟数
        //2.内层循环控制循环到这一趟的所有情况
        for (int i = 1;i <= 9;i++){
            for (int j = 1;j <= i;j++){
                System.out.print(j + "*" +i +"="+i*j +" ");
            }
            System.out.println();
        }
    }
}

7、求1-100的和,求1-100的偶数和,求1-100的奇数和;

public class Seven_Summation {
    public static void main(String[] args) {
        //1-100的和
        int i = 1;
        int sum = 0;
        while (i <=100){
            sum += i;
            i++;
        }
        System.out.println("1-100的和为:"+sum);
        //求1-100的偶数和
        int j = 0;
        int sum1 = 0;
        while (j <= 100){
            sum1 += j;
            j += 2;
        }
        System.out.println("1-100的偶数和:"+sum1);
        //求1-100的奇数和
        int m = 1;
        int sum2 = 0;
        while (m <= 100){
            sum2 += m;
            m += 2;
        }
        System.out.println("1-100的奇数和:"+sum2);
    }

}

8、求出 1-100当中既能被3整除又能被5整除还能被2整除的和;求出 1-100当中能被3整除或者能被5整除或者能被2整除的和

public class Eight_Summation {
    public static void main(String[] args) {
        //求出 1-100当中既能被3整除又能被5整除还能被2整除的和
        int total = 0;
        for(int i=1;i<=100;i++){
            if(i%30==0){
                total +=i;
            }
        }
        System.out.println("1-100当中既能被3整除又能被5整除还能被2整除的和:"+total);
        // 求出 1-100当中能被3整除或者能被5整除或者能被2整除的和
        total = 0;
        for(int i=1;i<=100;i++){
            if(i%2==0 || i%3==0 || i%5==0){
                total +=i;
            }
        }
        System.out.println("求出1-100当中能被3整除或者能被5整除或者能被2整除的和:"+total);
    }
}

9、请找出[100,300]之间能被5整除的所有数,每行输出8个数,每个数之间用逗号隔开

public class Ten_Summation {
    public static void main(String[] args) {
        //请找出[100,300]之间能被5整除的所有数,每行输出8个数
        System.out.println("[100,300]之间能被5整除的所有数:");
        int count = 0;
        for (int i=100;i<300;i++){
            if (i%5==0){
                System.out.print(i+"\t");
                count++;
            }
            if (count==8){
                System.out.println();
                count=0;
            }
        }
        //请找出[100,300]之间能被5整除的所有数,每行输出8个数,每个数之间用逗号隔开
        System.out.println("[100,300]之间能被5整除的所有数");
        count=0;
        for (int i = 100;i <= 300;i++){//当i=7时,count=8
            if (i%5==0){
                System.out.print(i+" "+",");
                count++;
            }
            if(count==8){
                // \b是退格符
                System.out.print("\b"+" ");//制表符跟空格写在一起,+拼接,不用再写一个print
//				System.out.print(" ");
                System.out.println();
                count=0;
            }
        }
    }
}

10、计算1000以内所有的质数(大于1的自然数,除了1和它本身之外不再有其他因数的自然数)。

//方法一
public class Eleven_CalculationPrime {
    public static void main(String[] args) {
        //for循环
        //计算1000以内所有的质数(大于1的自然数,除了1和它本身之外不再有其他因数的自然数)。
        /*
        思路:遍历1000以内的所有数,判断每个数,哪个数是质数,打印输出
        1.遍历1000以内数
        2.把每个数取从2开始到比它小1的每个值模,如果模等于0,说明有其他因数,也跳出内层循环,开始循环下一个数
        3.如果这个数取从2开始到比它小1的每个值模,如果没有一个模等于0,并且这个数减1等于它前边的数,即只有它本身
          与自己相等,即这个数的只有1跟它本身两个因数,打印出这个数
        4.开始下一个数,逻辑如上
        */
        int j;
        for (int i = 1;i <= 1000;i++){
            if(i==2){
                System.out.print(i+" ");
                continue;
            }
            for (j = 2;j < i;j++){//i=3
                if(i%j==0){//3%2==0?
                    break;
                }
                /*if (j == i-1){
                    System.out.print(i+" ");
                }*/
            }
            if (j == i){
                System.out.println(i + "");
            }
        }
    }
}
public void test2(){
        System.out.println("计算1000以内所有的质数");
        boolean f=true;          //定义一个标识
        for(int i=2;i<=1000;i++){
//            for(int j=2;j

11、假设有一个数字为8864,怎么分别取出它的千位,百位,十位,各位数字,各个位的和是多少?

public class Twelve_GetNum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个四位整数:");
        int num = sc.nextInt();
        int unit = num%10;//取个位
        int decade = num/10%10;//取十位  (num%100)/10
        int hundreds = num/100%10;//取百位  (num%1000)/100
        int thousand = num/1000;//取千位
        System.out.println("千位:"+thousand+",百位:"+hundreds+",十位:"+decade+",个位:"+unit);
        System.out.println("各个位的和是:"+(unit+decade+hundreds+thousand));

    }
}

12、计算100-999之间的水仙花数.(每个位置上的数字的3次幂之和等于它本身)

public class Thirteen_Daffodil {
    public static void main(String[] args) {
        /*
        * 计算100-999之间的水仙花数.(每个位置上的数字的3次幂之和等于它本身)
        * */
        for (int i = 100;i <= 999;i++){
            int a = i%10;//取个位
            int b = i/10%10;//(i%100)/10  取十位
            int c = i/100;//百位
            if(i==a*a*a+b*b*b+c*c*c) {
                System.out.println(i);
            }
        }
    }
}

13、打印一个菱形

   *
  ***
 *****
*******
 *****
  ***
   *
public class Fourteen_Rhombus {
    public static void main(String[] args) {
        /*
        *
        *    *
            ***
           *****
          *******
           *****
            ***
             *
        * */
        //先算前四行等腰三角形
        //空格规律每换一行少一个,*号规律每换一行多两个,与行数的关系2n-1
        for (int i = 1;i <= 4;i++){
            for(int j = 1;j <= 4 - i;j++){
                System.out.print(" ");
            }
            for (int k = 1;k <= 2 * i - 1;k++){
                System.out.print("*");
            }
            System.out.println();
        }
        //后算后三行倒三角
        //空格规律每换一行多一个,*号规律每换一行少两个,与行数的关系,2n-1
        for (int i = 1;i <= 3;i++){
            for (int j = 1;j <= i;j++){
                System.out.print(" ");
            }
            for (int k = 5;k >= 2 * i - 1;k--){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

14、Random 随机数 随机一个100以内的数,去猜这个数字是多少,猜的比这个随机数大,显示" 太大了,笨蛋 ",猜的比这个数小,显示" 太小了,小傻子 ",输入正确,显示" 针不戳,猜对了 ".只有五次机会,当五次机会用完,程序停止

//方法一
public class GuessNum {
    public static void main(String[] args) {
        //猜数字
        int count = 0;
        System.out.println("猜数游戏开始:");
        Random random = new Random();
        int num = random.nextInt(100);//[0,100)
        while (true){
            Scanner sc = new Scanner(System.in);
            int guess = sc.nextInt();
            if (guess == num){
                System.out.println("针不戳,猜对了");
                break;
            }else if(guess < num){
                System.out.println("太小了,小傻子");
            }else if(guess > num){
                System.out.println("太大了,大笨蛋");
            }
            count++;
            if (count == 5){
                System.out.println("Game Over!!!");
                break;
            }

        }
    }
}

//方法二
public class RandomTest {
    public static void main(String[] args) {
        System.out.println("请输入一个100以内的数:");
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 5; i++) {
            int b = sc.nextInt();
            Random ran = new Random();
            int a = ran.nextInt(100 - 1 + 1) + 1;
            if (b > a) {
                System.out.println("太大了,笨蛋");
            } else if (b == a) {
                System.out.println("真不错,猜对了");
            } else {
                System.out.println("太小了,小傻子");
            }
        }
    }

}

如有不对欢迎指正。

你可能感兴趣的:(java)