循环控制基础

news2024/11/26 20:24:12

循环控制

Key Point
●for 循环的使用
●while 循环
●do...while 循环
●break 和continue

练习

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

public class Test21 {

    public static void main(String[] args) {
//        (for 循环)计算1+2+3+...+100 的和
        int sum=0;
        for (int i = 1; i <=100; i++) {
            sum+=i;
        }
        System.out.println("sum="+sum);
   
    }
}

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

public class Test22 {
    public static void main(String[] args) {
        //(for 循环)计算1+3+5+...+99 的和
        int sum=0;
        for (int i = 1; i <=100; i++) {
            if (i%2==1){
                sum+=i;
            }
        }
        System.out.println("sum="+sum);

    }
}

3. (while/do…while 循环)

把1、2 两题用while 循环或do...while 循环改写

public class Test23 {
   public static void main(String[] args) {
      //把1、2 两题用while 循环或do...while 循环改写
      int sum1=0;
      int sum2=0;
      int i=1;
      int j=1;
      while (i<=100){
         sum1+=i;
         i++;
      }
      while (j<=100){
         sum2+=j;
         j+=2;
      }

      System.out.println("sum1="+sum1);
      System.out.println("sum2="+sum2);
   }
}

 

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

public class Test24 {
    public static void main(String[] args) {
        //(for 循环)读入一个小于10 的整数n,输出它的阶乘n!
        int sum=1;
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入要计算的阶乘的值");
        int num=scanner.nextInt();
        //输入要计算的阶乘的值
        for (int i = 1; i <=num; i++) {
            sum*=i;
        }
        System.out.println(num+"阶乘的值="+sum);
    }
}

 

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

public class Test25 {
    public static void main(String[] args) {
        //(for 循环)求100 以内所有能被3 整除但不能被5 整除的数字的和。
        int sum=0;
        for (int i = 1; i <=100; i++) {
            if (i%3==0&&i%5==0) {
                sum+=i;
            }
        }
        System.out.println("sum="+sum);
    }
}



 

6. (for 循环)百钱买百鸡”是我国古代的著名数学题。

题目这样描述:3 文钱可以买1只公鸡,2 文钱可以买一只母鸡,1 文钱可以买3 只小鸡。用100 文
钱买100 只鸡,那么各有公鸡、母鸡、小鸡多少只?

public class Test26 {
    public static void main(String[] args) {
//3 文钱可以买1只公鸡,2 文钱可以买一只母鸡,1 文钱可以买3 只小鸡。用100 文
//钱买100 只鸡,那么各有公鸡、母鸡、小鸡多少只?

        int totalMoney = 100;
        int totalChicken = 100;

        for (int x = 0; x <= totalMoney / 3; x++) {
            for (int y = 0; y <= totalMoney / 2; y++) {
                int z = totalChicken - x - y;
                if (3 * x + 2 * y + z / 3 == totalMoney && z % 3 == 0) {
                    System.out.println("公鸡:" + x + "只");
                    System.out.println("母鸡:" + y + "只");
                    System.out.println("小鸡:" + z + "只");
                    return;
                }
            }
        }

        System.out.println("无解");

    }
}

 

7. (for 循环)搬砖问题:

36 块砖,36 人搬,男搬4,女搬3,两个小孩抬1 砖, 要求一次全搬完,问男、女和小孩各若干?

public class Test27 {
    public static void main(String[] args) {
        //36 块砖,36 人搬,男搬4,女搬3,两个小孩抬1 砖, 要求一次全搬完,问男、女和小孩各若干?
        /*
        * x 男人
        * y 女人
        * z 小孩
        * */
        for (int x = 0; x <= 36; x++) {//男人数量
            for (int y = 0; y <= 36 - x; y++) {// 36 - x;女人数量
                int z = 36 - x - y;//小孩数量
                if (8 * x + 6 * y + z == 72) {//等式
                    System.out.println("男:" + x);
                    System.out.println("女:" + y);
                    System.out.println("小孩:" + z);
                    return;
                }
            }
        }
 
        System.out.println("无解");
    }
}

 

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

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

public class Test28 {
    public static void main(String[] args) {
        for (int num = 1000; num <= 9999; num++) {
            int a = num / 1000;
            int b = (num / 100) % 10;
            int c = (num / 10) % 10;
            int d = num % 10;
 
            if (Math.pow((10 * a + b + 10 * c + d), 2) == num) {
                System.out.println(num);
            }
        }
    }
}

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

 n = 3
*

***

*****

n = 4
*

***

*****

*******

思路:读入的整数n,就是外层循环的循环次数。
对于每一行,要做的事情:1. 输出若干个空格;2. 输出若干个星;3. 换行。
提示:输出不换行,用System.out.print()

public class Test29 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入要打印的行数");
       int line= scanner.nextInt();
 
        for (int i = 0; i < line; i++) {
            for (int j = 0; j < i*2+1; j++) {
                System.out.print("*");
            }
            System.out.println();
 
        }
    }
}

 

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

public class Test210 {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <=i; j++) {
                System.out.print(j+"*"+i+"="+(i*j)+" ");
            }
            System.out.println();
        }
    }
}

 

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

a3+b3+c3=abc,则abc 是水仙花数。

public class Test211 {
    public static void main(String[] args) {
        for (int num = 100; num < 1000; num++) {
            int a = num / 100;
            int b = (num / 10) % 10;
            int c = num % 10;
 
            if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == num) {
                System.out.println(num);
            }
        }
    }
}

 

12. (循环)输入一个整数,计算它各位上数字的和。

(注意:是任意位的整数)

public class Test212 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入数字");
        int number= scanner.nextInt();
        int sum=0;
        while (number!=0){
            sum+=number%10;//取下来最后一位
            number=number/10;//去掉最后一位
        }
        System.out.println("number="+number+"的各位数字的和为"+sum);
    }
}

 

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

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

public class Test213 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入数字");
        int number= scanner.nextInt();
       if(isPrime(number)){
           System.out.println("number="+number+"是素数");
       }
       else {
 
           System.out.println("number="+number+"不是素数");
       }
    }
    private static  boolean isPrime(int number){
        if (number<=1){
            return false;
        }
        else {
            for (int i = 2; i <=Math.sqrt(number); i++) {
                if (number%i==0){
                    return false;
                }
            }
        }
        return true;
    }
}

 

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

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

public class Testr14 {
    public static void main(String[] args) {
        System.out.println("1000以内的完数:");
        //循环找完数
        for (int num = 2; num <= 1000; num++) {
            if (isPerfectNumber(num)) {
                System.out.println(num);
            }
        }
    }
 
    //判断完数
    //如果一个数等于其所有因子之和,我们就称这个数为"完数"
    //循环找到所有的引子相加
    public static boolean isPerfectNumber(int num) {
        int factorsSum = 0;
        for (int i = 1; i < num; i++) {
            if (num % i == 0) {
                factorsSum += i;
            }
        }
        return factorsSum == num;
    }
}

 

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 Test215 {
    public static void main(String[] args) {
        double ltargetPi=3.1415926;
        double rtargetPi=3.1415927;
 
        int iteration=calculatePi(ltargetPi,rtargetPi);
        System.out.println("在"+ltargetPi+'-'+rtargetPi+"范围内,进行了"+iteration+"次迭代!");
    }
 
 
 
    //不断更新calculatePi的值以至于获取逼近的Π的值
    public static int calculatePi(double ltargetPi,double rtargetPi){
        double calculatePi=0.0;//存储Π的值。下面计算的时候会一直更新这个值,一直去逼近Π
        int sign=1;//表示正负号的
        int denominator=1;//表示分母  每次迭代会+2
        int iteration=0;//表示迭代的次数,0表示没有进行迭代
 
        //每次迭代逼近目标的Π值
        //每次循环计算的是精度,大于的话就是还没到精度就会一直循环下去
        while (true){
            double term=sign*(4.0/denominator);//必须是x.0的形式不然不是double
            calculatePi+=term;//计算当前的Π值
            sign*=-1;//变换符号
            denominator+=2;//更新分母
            iteration++;//更新迭代次数
            if (ltargetPi<=calculatePi&&calculatePi<=rtargetPi){
                break;
            }
        }
        return iteration;//得到迭代次数
    }
 
 
}

 

16. (循环)已知:faibonacci(费波那契)数列的前几个数分别为0,1,1,

235……。从第3 项开始,每一项都等于前两项的和。
读入一个整数n,编程求出此数列的前n 项。
注意:这里的数列是从0 开始的。

 

public class Test216 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入数字");
        int number= scanner.nextInt();
        System.out.print("前n项");
        for (int i = 0; i < number; i++) {
            System.out.print(fibonacci(i)+" ");
        }
        System.out.println();
        
    }
 
    //求斐波那契数组
    private static long fibonacci(int n){
        if (n==0) {//递归出口
            return 0;
        }
        else if (n==1) {
            return 1;//递归出口
        }
        else {//递归方程
            return fibonacci(n-1)+fibonacci(n-2);
        }
    }
}

 

17. (循环,操作符)一个int 类型的整数由32 个二进制位组成,每个二进

制位的值要么为0 要么为1。要求读入一个int 类型的整数n,计算它的32 个二
进制位中总共有多少位为1

public class Test217 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入数字");
        int number= scanner.nextInt();
        System.out.println(number+"中1的数量为"+countOnes(number));
    }
    //计算int中的整数的量(采用移位的方式)
    public static int countOnes(int n) {
        int count = 0;
        for (int i = 0; i < 32; i++) {
            if ((n & 1) == 1) {
                count++;
            }
            n >>= 1;
        }
 
        return count;
    }
 
}

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

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

public class Test218 {
    public static void main(String[] args) {
        int year ; // 示例:年份为2000
        int month ;   // 示例:月份为1
        int day ;     // 示例:日期为5
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入年份");
        year=scanner.nextInt();
        System.out.println("请输入月份");
        month=scanner.nextInt();
        System.out.println("请输入日");
        day=scanner.nextInt();
        LocalDate startDate = LocalDate.of(2000, 1, 1); // 开始日期
        LocalDate targetDate = LocalDate.of(year, month, day); // 给定日期

        //计算出开始日期和目标日期之间的天数差,并将其加1,得到总天数
        //ChronoUnit.DAYS.between 方法计算出开始日期和目标日期之间的天数差
        long days = ChronoUnit.DAYS.between(startDate, targetDate) + 1; // 计算日期间隔,需要加1

        int count = (int) (days % 5); // 取余数

        if (count == 1 || count == 2 || count == 3) {
            System.out.println("这个人在打渔。");
        } else {
            System.out.println("这个人在晒网。");
        }


    }
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/701054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我该如何抉择?测试工程师vs测试开发工程师vs开发工程师...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件开发工程师&a…

基于Python所写的读者书库设计

点击以下链接获取源码资源&#xff1a; https://download.csdn.net/download/qq_64505944/87964232 《RCQ读者书库》程序使用说明 在PyCharm中运行《RCQ读者书库》即可进入如图1所示的系统主界面。 图1 系统主界面 具体的操作步骤如下&#xff1a; &#xff08;1&#xff09;…

智慧校园--webGIS--高德地图

实现地图点击打卡&#xff0c;驾车路线。 需要自己去高德开发平台注册新建自己的项目保存key和秘钥 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"…

测试Hyperledger Fabric环境

首先进入fabric-samples目录中的first-networked 子目录 cd fabric-samples/first-network 在first-network目录下有一个自动化脚本byfn.sh,可以使用-help参数查看相应的可 用命令&#xff0c;在命令提示符中输入如下命令&#xff1a; ./byfn.sh --help命令执行成功后&#…

【运维工程师学习二】OS系统管理

【运维工程师学习二】OS系统管理 1、操作系统管理2、进程管理3、进程的启动4、进程信息的查看4.1、STAT 进程的状态&#xff1a;进程状态使用字符表示的&#xff08;STAT的状态码&#xff09;,其状态码对应的含义&#xff1a;4.2、ps命令常用用法&#xff08;方便查看系统进程&…

【数据库八】MySQL MHA高可用配置及故障切换

MHA高可用配置及故障切换 1.什么是MHA2.MHA组成3.MHA特点4.案例实施&#xff1a;搭建MySQL MHA高可用及故障切换4.1 主节点数据库&#xff08;CentOS 7-5&#xff09;4.2 从节点数据库&#xff08;CentOS 7-6&#xff09;4.3 从节点数据库&#xff08;CentOS 7-7&#xff09;4.…

9.3 多路复用poll函数

目录 poll和epoll poll函数和epoll函数族 poll函数 ​编辑 poll函数&#xff1a;事件类型 epoll函数族 epoll_event结构体 poll和epoll poll函数和epoll函数族 poll函数 poll函数&#xff1a;事件类型 events&#xff1a; POLLIN&#xff1a;有数据可读 POLLPRI&#x…

python读取CSV文件表头字段乱序作json文件(自己笔记)

有时候我们会将csv文件的某列对应某列(或这某几列)&#xff1b;如{A&#xff1a;[B,C,D,E]},说白了就是一个键对应的值是一个列表&#xff0c;但是有时候我们的值在表头中位置不一致&#xff0c;这时候我们就需要先获取每一个字段的索引值&#xff0c;这样程序就会通过索引值自…

[Flask] Flask的请求与响应

1.Flask的请求 如果以GET请求访问URL&#xff0c;例如URL是127.0.0.1:5000/?nameandy&age18&#xff0c;那么如何获取这个URL的参数?如果以POST请求提交一个表单&#xff0c;那么又如何获取表单中各个字段值呢? Flask提供的Request请求对象就可以实现上述功能 Reques…

uniapp开发的微信小程序之实现转发功能以及页面跳转传递、接收对象

效果图&#xff1a; 转发功能&#xff1a; <template><view class"container"><button class"share-btn" open-type"share">转发</button></view> </template><script> export default {data() {re…

规划电子类专业生涯:打造单片机/嵌入式技术专家之路

如果我是一个电子类专业的学生&#xff0c;打算将来从事单片机/嵌入式方向的职业&#xff0c;我可能会采取以下步骤来规划我的职业生涯&#xff1a; 学术准备&#xff1a;我将全面学习电子工程的基础知识&#xff0c;包括模拟电子、数字电子、信号处理等方面的知识。我会确保自…

page cache 在内核中的数据结构

page cache 在内核中的数据结构是一个叫做 address_space 的结构体&#xff1a;struct address_space。 struct address_space {struct inode *host; // 关联 page cache 对应文件的 inodestruct radix_tree_root page_tree; // 这里就是 page cache。里边缓存了文件的所有缓…

拼多多购物中的4个开关需尽快关闭,防止个人购买信息泄露

拼多多购物中的4个开关需尽快关闭&#xff0c;防止个人购买信息泄露 随着网络购物的普及&#xff0c;越来越多的人选择在拼多多等平台进行购物。然而&#xff0c;在享受便利的同时&#xff0c;我们也要警惕个人购买信息泄露的风险。在拼多多购物时&#xff0c;有些设置可能会影…

Hyperledger Fabric核心配置文件(1)

1、core.yaml core.yaml配置文件是Peer节点的示例配置文件&#xff0c;具体路径在fabric-samples/config目 录下。该core.yaml示例配置文件共指定了如下六大部分内容。 1.日志部分 日志记录级别有6种&#xff1a; CRITICAL、 ERROR、 WARNING、 NOTICE、 INFO、 DEBUG. …

CUDA矩阵乘法GEMM优化,从全局内存到共享内存优化的详细流程

在​未优化的矩阵乘法​CA*B中&#xff0c;a、b和c分别是指向矩阵 A、B 和 C 的全局内存的指针&#xff1b;blockDim.x、blockDim.y、 和TILE_DIM都等于 w。wxw-thread 块中的每个线程计算 C 的tile中的一个元素&#xff0c;row并且col是由特定线程计算的 C 中元素的行和列。该…

celery----异步任务、延时任务、定时任务

Celery 是一个强大的分布式任务队列&#xff0c;它可以让任务的执行完全脱离主程序&#xff0c;甚至可以被分配到其他主机上运行。我们通常使用它来实现异步任务&#xff08;async task&#xff09;和定时任务&#xff08;crontab&#xff09;。它的架构组成如下图 &#xff1a…

初学帆软踩得坑——数据填报_Excel数据导入

第一次做数据填报&#xff0c;按照教程做完在用excel导入工具本地数据报表的时候出现 1、整块空白合并单元格&#xff0c;数据无法填入的现象 2、表格重新导入一批&#xff0c;无法成功入库&#xff0c;导致只能导入一次&#xff0c;如下图&#xff1a; 说明&#xff1a;点击…

python网络编程(四),用面向对象方式实现文件上传下载

一&#xff1a;背景 在之前已经实现了文件的下载&#xff0c;现在再来完善上传功能&#xff0c;并且使用面向对象来封装&#xff0c;让代码看起来更加清楚明了。 二&#xff1a; 使用规则和运行结果 下载文件&#xff0c;下载格式 get 文件名 get空格后面直接接文件名称&…

MySQL-SQL InnoDB引擎 (下)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

【直播预告】HarmonyOS极客松赋能直播第三期:一次开发多端部署与ArkTS卡片开发

直播预约通道&#xff1a; 【直播预告】HarmonyOS极客松赋能直播第三期&#xff1a;一次开发多端部署与ArkTS卡片开发