Java循环控制

xiaoxiao2021-02-28  84

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=i0; 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; 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&&y0!=0 ||y@0==0&&y0==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("这天晒网"); } } }

转载请注明原文地址: https://www.6miu.com/read-54161.html

最新回复(0)