Java基础练习题for(详解)


文章介绍:
本篇文章会给大家不定期的更新一些关于For循环的经典例题,每一道题都有注释和解析,是属于Java方面的,如果大家需要C语言的代码,则可以去代换,因为代码的主体基本一样,只需要更改一下格式就可以了.
for循环的介绍:
For循环结构是由四部分组成的:初始变量、循环条件、变量的变化和循环的语句块。

基本语法:
for(表达式①;布尔表达式②;表达式③){
    
    
		表达式④; 
		}
表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
表达式2: 循环条件,满则循环继续,否则循环结束
表达式3: 循环变量更新方式
表达式4: 循环的语句块
在执行for循环的时候:
	首先执行表达式1,完成某一变量的初始化工作;
	下一步判断表达式2的值,true,进入循环体,false的话跳出循环;
	执行完2后紧接着执行表达式3,
		这部分通常是增加或者减少循环控制变量的一个表达式,这样第一轮就结束了.
	第二轮循环从表达式2开始.若为true则进入循环体,false跳出循环.

1. 在中国历法中有12生肖年份,2019年是乙亥猪年,请从控制台输出1949年(包含) 到2019年(包含)中所有是猪年的年份

public class demo01PigYear {
    
    
		//已知2019年是猪年,那么2019减去某年份的值对12取模,若结果为0,
		//那么此年份都是猪年,直接输出就行
    public static void main(String[] args) {
    
    
        int pig=2019;  //定义2019年是猪年
        for (int i = 1949 ; i <=2019; i++) {
    
        
            if ((pig-i)%12==0){
    
      
                System.out.println(i+"年是猪年!");
            }
        }
    }
}

2.计算出1~100之间的偶数和,并把结果在控制台输出

public class demo02EvenSum {
    
    
    public static void main(String[] args) {
    
    
    	//先将sum的初始值设为0.
        int sum=0;
        for (int i = 1; i <=100 ; i++) {
    
    
        	//如果i%2==0,则说明i是偶数
            if (i%2==0){
    
    //如果求奇数的和时,将0改为1就行
            	//sum=sum+i;sum的值每次都会更新,实现累加的效果
                sum+=i;  
            }
        }
        System.out.println("1~100之间偶数的和为:"+sum);
    }
}

3.在控制台打印出一个四行五列的长方形,用*表示

public class demo03RectanglePrint {
    
    
	//此题用一个for循环的嵌套就可以轻松解决了.
    public static void main(String[] args) {
    
    
        //第一个for表示行,第二个for表示列
        for (int i = 0; i < 4; i++) {
    
    
            for (int j = 0; j < 5; j++) {
    
    
       		/*此处不要用println,println默认换行.
       		用换行以后,这一行就不能整齐排列了
					 本来是:*****
					 结果是:*
					 	   *
					 	   *
					 	   *
					 	   *
			*/
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

4.在控制台打印出一个五行的三角形

public class demo04TrianglePrint {
    
    
	/*
			用一个for循环的嵌套就行.第一行一个*,第二行两个*,依次类推
				*
				**
				***
				****
				*****
	*/
    public static void main(String[] args) {
    
    
        for (int i = 0; i < 5; i++) {
    
    
            for (int j = 0; j <= i; j++) {
    
    
                System.out.print("*");//此处也不用换行
            }
            System.out.println();
        }
    }
}

5.运用break结束当前的循环,计算1,2,3,4,5这一组数据,但要求只计算前三个数的和

public class demo05JavaBreak {
    
    
    public static void main(String[] args) {
    
    
        int sum=0;
        for (int i = 1; i <= 5; i++) {
    
    
            sum+=i;
            //当i=3时,直接结束循环,此时的值为1+2+3=6
            if (i==3){
    
    
                break;
            }
        }
        System.out.println("前三个数的和为:"+sum);
    }
}

6.运用continue跳过当前的循环,计算1,2,3,4,5这一组数据,但要求只计算1,2,3,5的和

public class demo06JavaContinue {
    
    
    public static void main(String[] args) {
    
    
        int sum=0;
        for (int i = 1; i <= 5; i++) {
    
    
        	//当i=4时,跳出当前循环,不执行sum+=i;进行下一次循环.
        	//则可以实现1+2+3+5=11
            if (i==4){
    
    
                continue;
            }
            sum+=i;
        }
        System.out.println("sum="+sum);
    }
}

7.鸡兔共35只,共94只脚,那么鸡和兔各几只?

public class demo07SameCage {
    
    
    public static void main(String[] args) {
    
    
        //i表示鸡,j表示兔
        for (int i = 0; i <= 35; i++) {
    
    
        	//让鸡的数量从0开始增加,兔的数量从35依次递减
            for (int j = 35; j >= 0 ; j--) {
    
    
            	//if为限制条件,脚共有94只,鸡兔的总数为35只
            	//当两个条件都满足时,输出鸡兔的数量.
                if ((i*2+j*4)==94 && (i+j)==35){
    
    
                    System.out.println("鸡:"+i+"  兔:"+j);
                }
            }
        }
    }
}

8.求出100-1000之间所有符合水仙花数条件的数

所谓的"水仙花数"是指一个三位数其各位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:1^3 + 5^3 + 3^3=153.

public class demo08Daffodil {
    
    
    public static void main(String[] args) {
    
    
    	//先定义整型变量
		int a=0;
		int b=0;
		int c=0;
		System.out.println("水仙花数为:");
		//循环遍历100~1000之内的符合条件的数
		    for (i= 100; i < 1000; i++) 
			{
    
    
				a = i / 100; //求出三位数的百位
				b = (i - a * 100) / 10; //求出三位数的十位
				c = i % 10; //求出三位数的个位
				//判断是否为水仙花数的条件
				if (a * a * a+ b * b * b +c * c * c == i) 
				{
    
    
					System.out.print(i+" ");
				}
			}
 	  }
}

9.打印乘法口诀表

//此处要导入Scanner包.
import java.util.Scanner;
public class Multiplication {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc=new Scanner(System.in);
        //由键盘输入数字,来定义乘法表是N*N的
        int n=sc.nextInt();
        System.out.println("该乘法表是"+n+"*"+n+"的");
        for (int i=1;i<=n;i++){
    
    
            for (int j=1;j<=i;j++){
    
    
            	//%-2d*%2d=%-3d  让数与数直接有间隙并且左对齐
            	//看起来更舒服清除一点.
                System.out.printf("%-2d*%2d=%-3d  ",i,j, i * j);
            }
            System.out.println();
        }
    }
}

10.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如5+55+555+5555+55555(此时共有5个数相加),几个数相加有键盘控制.

import java.util.Scanner;

public class demo10NumSum {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc=new Scanner(System.in);
        System.out.println("num个数字相加,num为:");
        //键盘输入数字,由num接收
        int num=sc.nextInt();
        System.out.println("你希望a是:");
        //键盘输入数字,由a接收.
        int a= sc.nextInt();
        //将和初始化为0
        int sum=0;
        //everyNum变量,表示式子中每一项的数.
        int everyNum=0;
        for (int i = 0; i < num; i++) {
    
    
            /*
                Math.pow(double a,double b)是求指数的方法
                  a表示底数,i表示指数.
                因为Math.pow(double a,double b)是double类型的,
                  所以要强制转换为int类型的
                假设a=2,num=3;
                  则式子中第一项为:2
                  第二项为:2+2*10=22;
                  第三项为:22+2*100=222;
             */
            everyNum+=(int)(a*Math.pow(10,i));
            System.out.print(everyNum);
            /*
                如果把+放到System.out.print(everyNum);
                里面,那么式子的最后一项就为:
                2+22+222+   ,最后一项后面就会跟一个+
                所以我用一个if语句去把+加进去
                    当刚好等于最后一项时,不进if语句,
                    实现了将最后一项后的 + 删除的功能.
                    在else语句里输出 = ,将其添加到式子中最后一项的后面
                    因此2+22+222+ 就变成了2+22+222=
             */
            if (i<num-1){
    
    
                //注意,此处不用换行
                System.out.print("+");
            }
            else{
    
    
                //注意,此处不用换行
                System.out.print("=");
            }
            //sum求和.
            sum+=everyNum;
        }
        System.out.println(sum);
    }
}

11.打印两个数之间的素数

import java.util.Scanner;

public class demo11PrimePrint {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入起始数字:");
        int begin= sc.nextInt();
        System.out.println("请输入末尾数字:");
        int end=sc.nextInt();
        //先定义一个count变量,后面有用.
        int count=1;
        //先进行判断,不满足条件的话,当前程序结束.
        if (begin>=end||begin<2||end<2) {
    
    
            System.out.println("输入错误,请重新启动该程序:");
        }else{
    
    
            for (int i = begin; i <= end ; i++) {
    
    
                for (int j=2;j<end+1;j++){
    
    
                    //素数判断,满足该条件说明此数不是素数,break结束循环
                    if (i%j==0 && i!=j){
    
    
                        break;
                    }
                    //满足该条件,说明为素数.
                    else if(j==i) {
    
    
                        //%-3d 设置数之间的间距,并设置为左对齐
                        System.out.printf("%-3d ",j);
                        //count变量,起到换行的作用,每十个数换一行,
                        //为了看起来更加的清楚.
                        if (count%10==0){
    
    
                            System.out.println();
                        }
                        count++;
                    }
                }
            }
        }
    }
}

12.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输 入,最多输入三次。三次均错,则提示退出程序 .

import java.util.Scanner;

public class demo12PassWord {
    
    
    public static void main(String[] args) {
    
    
        System.out.println("请输入密码:");
        //此密码为登录密码,用来和你后面的输入的密码进行比较.
        String password1="wangzhe";
        Scanner sc=new Scanner(System.in);
        //定义次数为3次.
        int times=3;
        for (int i=0;i<3;i++){
    
    
        	//password2接收键盘输入的密码
            String password2=sc.next();
            //键盘输入的密码和原来的密码进行比较,如果相同,输出"输入正确!"
            if (password2.equals(password1)){
    
    
                System.out.println("输入正确!");
                //break结束循环
                break;
            }else{
    
    
            	//如果密码不一样,times--,
                times--;
                System.out.println("输入有误,请重新输入,并且您还有"+times+"次机会!");
            }
        }
        //当times=0的时候,证明可以输入的次数已经用完了.
        if (times==0){
    
    
            System.out.println("次数用完,退出系统!");
            sc.close();
        }
    }
}

13.求两个整数的最大公约数.

import java.util.Scanner;

public class demo13MaxGongYue {
    
    
    public static void main(String[] args) {
    
    
    	//定义一个中间变量.
        int c;
        System.out.println("请输入两个数:");
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        //判断大小,时刻保证a<b.在下面的for循环里面有用.
        if (a > b)
        {
    
    
            c = a;
            a = b;
            b = c;
        }
        //由最大的数依次递减,如果刚好满足条件,此时肯定是最大的公约数.
        /*
        例如:2,20,由最大的数开始依次递减,2,4,10都满足条件,
        			但是是由最大的往下依次递减的,所以等于10的时候,
        			刚好满足条件,break结束循环,直接输出10,不需要再往下判断了.
        */
        for (int i = b; i > 0; i--) {
    
    
        	//如果同时满足这个条件,则说明此刻的i是他们的最大公约数.
            if (a % i == 0 && b % i == 0)
            {
    
    
                System.out.println("最大公约数为:"+i);
                break;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_47278183/article/details/120058051