Java循环控制

Key Point

 for 循环的使用

 while循环

 do...while 循环 break 和 continue

练习

 1.  (for 循环)计算 1+2+3+...+100 的和

 

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

2.  (for 循环)计算 1+3+5+...+99 的和

public class Test02 {
	public static void main(String[] args) {
	int sum=0;
	for(int num=1;num<=100;num++){
		if(num%2!=0){
	       sum=num+sum;
	      }
		}
	System.out.println (sum); //2500
   }
}


 3.  (while/do…while 循环)把 1、2 两题用 while 循环或 do...while 循环改写

 

public class TestWhile1 {
	public static void main(String[] args) {
          int sum=0;
          int i=1;
	      while(i<=100){
              sum=sum+i;
              i++;
	        }
	    System.out.println(sum);
	}
}

public class Test3 {
	public static void main(String[] args) {
		int sum=0;
		int num=1;
		while(num<=100){
			if(num%2!=0){
		       sum=num+sum;
		    } 
			num++;
		      } 
		System.out.println (sum); //2500
	   }
	}
public class Test03 {
	public static void main(String[] args) {
		int sum=0;
		int num=1;
		do{
			if(num%2!=0){
		       sum=num+sum;
		    } 
			num++;
		      } while(num<=100);
		System.out.println (sum); //2500
	   }
	}

4.  (for 循环)读入一个小于10 的整数 n,输出它的阶乘 n!

 

import java.util.*;
public class Test4 {
	public static void main(String[] args) {
		System.out.println("请输入一个小于10的整数:");
        Scanner sc = new Scanner(System.in);
       int n = sc.nextInt();
		
		int sum=1;
	    for(int i=1;i<=n;i++){
			sum=sum*i;
		}
		System.out.println ("一个10以内数的阶乘:"+sum);
	}

}

5.  (for 循环)求 100以内所有能被 3 整除但不能被 5 整除的数字的和。

 

//例题5:
public class Test5 {
	public static void main(String[] args) {
	int sum=0;
	for(int num=1;num<=100;num++){
		//if(num%2!=0){
		if(num%3==0&&num%5!=0){
	       sum=num+sum;
	      }
		}
	System.out.println (sum); //1368
   }
}

6.  (for 循环)*“百钱买百鸡”是我国古代的著名数学题。题目这样描述:3 文钱可以买 1 只公鸡,2 文钱可以买一只母鸡,1 文钱可以买 3 只小鸡。用 100 文钱买 100只鸡,那么各有公鸡、母鸡、小鸡多少只?

 

public class Test6 {
	public static void main(String[] args) {
		
	int i=0;
	for(int a=1;a<100/3;a++){  //100/3=33,公鸡小于33只;
	 for(int b=1;b<100/2;b++ ){ // 100/2=50,母鸡少于50;
	   if((100-3*a-2*b)*3 == (100-a-b)){
	     i++;
		System.out.println("第"+i+"方法:"+a+"只公鸡"+b+"只母鸡"+(100-a-b)+"只雏鸡");
		 System.out.println();
								
								}
	}
				
      }
    }
}

7.  (for 循环)*搬砖问题:36 块砖,36 人搬,男搬 4,女搬 3,两个小孩抬 1 砖,要求一次全搬完,问男、女和小孩各若干?

 

public class Test7 {
	public static void main(String[] args) {
		int s=0;
		for( int x=0;x<=9;x++) {
		   for( int y=0;y<=12;y++){
		        for( int z=0;z<=36;z++) {
		          if(z%2==0 && (x+y+z)==36 && (x*4+y*3+z/2)==36)
		               {
		                  s++;
		                   System.out.println("第"+s+"种方法: "+x+"男"+y+"女"+z+"小孩子");
		                 }
		              }
		           }
		        }
	}
}//第1种方法:    3男3女30小孩子

8.  (for 循环)*编程找出四位整数 abcd 中满足下述关系的数。

 (ab+cd)(ab+cd)=abcd

 

public class Test8 {
	public static void main(String[] args) {
		for(int i=1000;i<10000;i++){
			int ab=i/100;
			int cd=i%100;
			if((ab+cd)*(ab+cd)==(ab*100+cd)){
				System.out.println("四位数是"+i);
			}
		}
	}
}//2025
//3025
//9801

9. (循环)*读入一个整数 n,输出如下图形

 

n = 4

 

     *

   ***

  *****

 ******

思路:读入的整数 n,就是外层循环的循环次数。

 对于每一行,要做的事情:1. 输出若干个空格;2. 输出若干个星;3. 换行。提示:输出不换行,用System.out.print()

 

import java.util.*; 
class  TestFor9{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("打印几行:");
		int n = sc.nextInt();
		
		for(int i=1;i<=n;i++){   //打印列
				
		  for(int k=1;k<=n-i;k++){
                      System.out.print(" ");
                     }   //打印每行的空格
						
		   for(int j=1;j<=2*i-1;j++){
                     System.out.print("*");
                        } //打印每行的*
					
		System.out.println();		
		}
		
		}
	}

10.  (循环)*输出 99 乘法表

 

public class For10 {
	/*
	需求: 在控制台上打印一个正立的直角三角形 。
	*/

	
	public static void main(String[] args) {
			for(int i = 1 ; i< 9 ; i++){
				for(int j = 1 ; j<=i ; j++){ //控制列数 
					System.out.print(i+"*"+j+"="+i*j+"\t ");
				}
			
				System.out.println();
				}
		}
}

11.  (循环)**求水仙花数。所谓水仙花数,是指一个三位数 abc,如果满足 a3+b3+c3=abc,则 abc 是水仙花数。

 

//例题
public class Test11 {
	public static void main(String[] args) {
    int z=0;
	for(int i=1;i<=9;i++){
	    for(int n=0;n<=9;n++){
	      for(int y=0;y<=9;y++){
	        int s=(i*100)+(n*10)+y;
              int b=(i*i*i+n*n*n+y*y*y);
	            if(b==s)
	             {
	               z++;
	                System.out.println("第"+z+"种方法:"+s);
	                 }
	              }
	           }
	          }
	}
}

12.  (循环)**输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)

 

//例题
public class Test12 {
	public static void main(String[] args) {
	     Scanner sc = new Scanner(System.in);
	     System.out.print("请输入一个整数:");
	        int a = sc.nextInt();
	        int sum=0;
	        for(int i=0;a>0;i++){ 
	        	sum+=a%10;
                 a/=10;
               }
System.out.println("sum=:"+sum);
}
}

13.  (循环)**输入一整数 A,判断它是否质数

 

提示 1:若从 2 到 A 的平方根的范围内,没有一个数能整除 A,则 A 是质数。提示 2:在 java 中计算 n 的平方根可以使用 Math.sqrt(n)

 

//例题
import java.util.*;
public class Example13

 {
	public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个数:");
		int a=sc.nextInt();
		if(a<2){
			System.out.println("a是一个质数");}
		//判断该数最小公因子
		      for(int i=2;Math.sqrt(a)>=i;i++)
			  {
				if(a%i==0){
					System.out.println("该数不是质数");
				}
			 }
		      System.out.println("该数是质数");
		}
	
}

14.

(循环)**如果一个数等于其所有因子之和,我们就称这个数为"完数",例如 6  的因子为

1,2,3    6=1+2+36 就是一个完数.请编程打印出 1000 以内所有的完数

//例题14:求1000内的完数
public class Test14 {
	public static void main(String args[]){
		//int sum=0;
		for(int i=2;i<=1000;i++){
			int sum=0;
				 for(int j=1;j<i;j++){
			    	  if(i%j==0){
			    		sum+=j;
			    	    }}
			             if(sum==i){
			        	System.out.println(+i);
			       // }
			    }
}
	}
}//496	6 28



15*计算圆周率

中国古代数学家研究出了计算圆周率最简单的办法:

 PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17......

 这个算式的结果会无限接近于圆周率的值, 我国古代数学家祖冲之计算出, 圆周率在 3.1415926和 3.1415927 之间,请编程计算,要想得到这样的结果,他要经过多少次加减法运算?

 

public class Test15{
		public static void main(String[] args){
				double PI =0;
				int a=0;
				int b=0;
				double d =1.0;
				while(PI<3.1415926||PI>3.1415927){
					if((int)d%2!=0){
						PI =PI+ 4.0/(2*d-1);
						}else{
							PI =PI- 4.0/(2*d-1);
							b++;
							}
							
							d=d+1;	
							a++;
					}
					
					System.out.println("运算的总次数:"+a);
					System.out.println("减法的总次数:"+b);
				
			}
	}



16.  (循环)**已知:faibonacci(费波那契)数列的前几个数分别为 0,1,1,2,3,5,……。从第 3 项开始,每一项都等于前两项的和。

//例题16:数:0,1,1,2,3,5.......
import java.util.Scanner;
public class Test16 {
	public static void main(String[] args) {
	Scanner sc = new Scanner (System.in);
	System.out.print("请输入一个整数:"); 
	 int n=sc.nextInt();
	 int sum=0;
	 int  a=0;
	 int b=1;
	 for(int i=1;i<=n;i++)
	 {
		 if(i==1){
			 sum=0;
		 }else if(i==2){
			 sum=1;
		 }else{
			 sum=a+b;
			 a=b;
			 b=sum;
		 }
		 System.out.println(sum);
}
	 
}
}


 17.  (循环,操作符)**一个 int 类型的整数由 32 个二进制位组成,每个二进制位的值要么为 0 要么为 1。要求读入一个 int 类型的整数 n,计算它的 32 个二进制位中总共有多少位为

1?

 

import java.util.Scanner;
public class Test171 {
	public static void main(String args[]){
		Scanner sc = new Scanner (System.in);
		System.out.print("请输入一个二进制数:"); 
		int k=0;
		int n=sc.nextInt();
		for(int i=0;i<32;i++){
			int t=n>>i;
		    if((t & 1)==1){
		    	k++;
		    }
		}
	System.out.println(k);
}
}

18.  (循环)***打渔还是晒网

 中国有句老话叫“三天打渔,两天晒网”。假设有一个人从 2000 年 1 月 1 日开始“三天打渔两天晒网”,读入三个整数,分别表示年份、月份、日期,问这三个整数所表示的那天这个人在打渔还是在晒网?

//例题18:打渔晒网
import java.util.Scanner;
public class Test18 {
	private static Scanner sc;
	public static void main(String args[]){
		
	     int sum=0;
		sc = new Scanner (System.in);
		System.out.print("请输入一个年份:"); 
        int y=sc.nextInt();
        System.out.print("请输入一个月份:"); 
        int m=sc.nextInt();
       System.out.print("请输入一个日期:"); 
        int d=sc.nextInt();
        for(int i=2000;i<y;i++){
        	sum=sum+365;
        	if(y%4==0&&y%100!=0 ||y%400==0&&y%100==0){
        		sum++;
        		}
        	for(int j=0;j<m-1;j++){
        		switch(j){
        			case 1:
        			case 3:	
        		    case 5:	
        			case 7:
        			case 8:	
        			case 10:
        			case 12:	
        			      sum+=31;
        			 break;
        			case 4:
        			case 6:
        			case 9:		
        			case 11:
        			   sum+=30;	
        			   break;
        			   default:
        				   sum+=28;
        		}
	         }
        	
        }	
        		
        		sum=sum+d;
        		if(sum%5==1||sum%5==2||sum%5==3){
        			System.out.println("这天打渔");
        		}else{
        			System.out.println("这天晒网");
        		}
              }
        }



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值