循环进阶---->一环套一环

二重循环的几种语法:

//while与while循环嵌套
        while (循环条件1) {
            //循环操作1
            while (循环条件2) {
                //循环操作2
            }
        }
        //do-while与do-while循环嵌套
        do {
            //循环操作1
            do {
                //循环操作2
            } while (循环条件2);
        } while (循环条件1);

        //for与for循环嵌套
        for (循环条件1) {
            //循环操作1
            for (循环条件2) {
                //循环操作2
                }
        }
        //while与for循环嵌套
        while (循环条件1) {
            //循环操作1
            for (循环条件2) {
                //循环操作2

            }

        }
        

上例子环节:

package cn.jbit.nestedloops;
/**
 * 打印九九乘法表
 */
public class MulTable {
    public static void main(String[] args) {
        int rows = 9;                        //乘法表的行数
        for(int i = 1; i<=rows; i++){        //一共9行
            for(int j = 1; j <= i; j++){    //第i行有i个式子
                System.out.print(j+"*"+i+"="+j*i+"    ");
            }
            System.out.print("\n");            //打印完一行后换行
        }
    }
}
package cn.jbit.nestedloops;
import java.util.Scanner;
/**
 * 输入行数打印等腰三角形
 */
public class IsoTriangle {
    public static void main(String[] args) {
        int rows = 0;    //三角形行数
        System.out.print("请输入等腰三角形的行数:");
        Scanner input = new Scanner(System.in);
        rows = input.nextInt();
        //打印等腰三角形
        for(int i = 1; i <= rows; i++){
            for(int j = 1; j <= rows-i; j++){
                System.out.print(" ");
            }
            for(int k = 1; k <= 2*i-1; k++){
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }
}
package cn.jbit.nestedloops;
import java.util.Scanner;
/**
 * 输入行数打印倒直角三角形
 */
public class InvertRTriAngle {
    public static void main(String[] args) {
        int rows = 0;    //三角形行数
        System.out.print("请输入直角三角形的行数:");
        Scanner input = new Scanner(System.in);
        rows = input.nextInt();

        //打印倒直角三角形
        for(int i = 1; i <= rows; i++){
            for(int j = 1; j <= rows+1-i; j++){
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }
}
package cn.jbit.nestedloops;
import java.util.Scanner;
/**
 * 输入行数打印直角三角形
 */
public class RTriAngle {
    public static void main(String[] args) {
        int rows = 0;    //三角形行数
        System.out.print("请输入直角三角形的行数:");
        Scanner input = new Scanner(System.in);
        rows = input.nextInt();

        //打印直角三角形
        for(int i = 1; i <= rows; i++){
            for(int j = 1; j <= 2*i-1; j++){
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }
}
package cn.jbit.nestedloops;
import java.util.Scanner;
/**
 * 计算一个班的平均分
 */
public class AvgScore {
    public static void main(String args[]){
        int[] score = new int[4];        //成绩数组
        float sum = 0.0f;                //成绩总和
        float average = 0.0f;            //成绩平均值

        //循环输入学员成绩
        Scanner input = new Scanner(System.in);
        System.out.println("请输入4位学员的成绩");
        for(int i = 0; i < score.length; i++){
            System.out.print("第"+ (i+1) +"位学员的成绩:");
            score[i] = input.nextInt();
            sum = sum + score[i];         //成绩累加
        }
        average = sum / score.length;    //计算平均值
        System.out.println("参赛学员的平均分是:" + average);
    }
}
package cn.jbit.nestedloops;
import java.util.Scanner;
/**
 * 统计打折商品数量
 */
public class Demo {
    public static void main(String[] args) {
        int count = 0;    //记录打折商品数量
        Scanner input = new Scanner(System.in);
        double price=0.0; //商品价格
        for(int i = 0; i < 3; i++){
            System.out.println("请输入第"+(i+1) +"个人所购的三件商品的价格:");
            for(int j = 0; j < 3; j++){
                price=input.nextDouble();
                if(price<300)
                    continue;
                count++ ; //累计
            }
            System.out.println("第"+(i+1) +"个人共有" +count + "件商品享受8折优惠!");
            count=0;//重置count值
        }
    }
}
package cn.jbit.nestedloops;

public class Chook {

    /**
     * 百钱买百鸡
     */
    public static void main(String[] args) {
        int way = 1;    //买法
        int k = 0;    //雏鸡数
        for(int i=1;i<=20;i++){        //公鸡数
            for(int j=1;j<=33;j++){    //母鸡数
                k = 100-i-j;        //一共100只鸡
                if(k%3 == 0 && (5*i+3*j+k/3 == 100)){//雏鸡数是3的倍数,总计100文钱
                    System.out.print("[买法 " + way++ + "] ");
                    System.out.println("公鸡: " +i+ "    母鸡:" +j+ "     雏鸡:" +k);

                }
            }
        }

    }

}
package cn.jbit.nestedloops;
import java.util.Scanner;
/**
 * continue断点演示:计算成绩85分以上的学员人数
 *
 */
public class AvgScore {
    public static void main(String[] args) {
        int[] score = new int[4];                //成绩数组
        int classnum = 3;                        //班级数目
        double sum = 0.0;                        //成绩总和
        double average = 0.0;                    //平均成绩
        int count = 0;                            //记录85分以上学员人数

        //循环输入学员成绩
        Scanner input = new Scanner(System.in);
        for(int i = 0; i < classnum; i++){
            System.out.println("请输入第" + (i+1) + "个班级的成绩");
            for(int j = 0; j < score.length; j++){
                System.out.print("第" + (j+1) + "个学员的成绩:");
                score[j] = input.nextInt();
                if(score[j] < 85){    //成绩小于85,则跳出本轮循环
                    continue;
                }
                sum = sum + score[j];            //成绩85分以上才进行累加
                count++;
            }
        }
        average = sum / count;                    //所有成绩85分以上的学员的平均分
        System.out.println("所有成绩85分以上的学员的平均分为:" + average);
    }
}
package cn.jbit.nestedloops;
import java.util.Scanner;
public class ATMDemo {
    /**
     * 简单ATM机取款过程模拟
     */
    public static void main(String[] args) {
        String pass = "";                //保存用户输入密码
        int amount = 0;                    //取款金额
        String password = "111111";        //用户密码
        int count = 0;                    //记录密码输入次数
        boolean isPass = false;            //密码是否通过验证
        Scanner input = new Scanner(System.in);

        while(count < 3 && !isPass){
            System.out.print("请输入密码:");
            pass = input.next();
            if(!password.equals(pass)){
                count++;
                continue;
            }
            isPass = true;                //密码通过验证
            System.out.print("请输入金额:");
            amount = input.nextInt();
            while(amount>0){
                if(amount<=1000 && amount%100==0){
                    System.out.println("您取了" +amount+ "元");
                    System.out.println("交易完成,请取卡!");
                    break;                //完成交易,退出
                }else{
                    System.out.print("您输入金额的金额不合法,请重新输入:");
                    amount = input.nextInt();
                    continue;            //继续让用户输入金额
                }
            }
        }
        if(!isPass){                    //用户输入了3次错误密码
            System.out.print("密码错误,请取卡!");
        }
    }
}
package cn.jbit.nestedloops;
import java.util.Scanner;
/**
 * 输入行数打印菱形
 */
public class Diamond {
    public static void main(String[] args) {
        int rows = 0;    //菱形的行数
        Scanner input = new Scanner(System.in);
        System.out.print("请输入菱形行数:");
        rows = input.nextInt();

        while(rows%2 == 0){
            System.out.print("请输入奇数:");
            rows = input.nextInt();
        }

        int n = (rows+1)/2;
        //打印菱形的上半部分
        for(int i = 1; i <= n; i++){//外层循环变量i控制行数
            for(int j = 1; j <= n-i; j++){//内层循环变量j控制该行空格数
                System.out.print(" ");
            }
            for(int k = 1; k <= 2*i-1; k++){//内层循环变量k控制该行*号数
                System.out.print("*");
            }
            System.out.print("\n");
        }
        //打印菱形的下半部分
        for(int i = n-1; i >= 1; i--){
            for(int j = 1; j <= n-i; j++){
                System.out.print(" ");
            }
            for(int k = 1; k <= 2*i-1; k++){
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }
}
时间: 2024-12-18 13:04:39

循环进阶---->一环套一环的相关文章

循环单向链表(约瑟夫环)

#include <stdio.h> #include <stdlib.h> typedef struct List { int data; struct List *next; }List; //创建循环单向链表n为长度 List *list_create(int n) { List *head, *p; int i; head = (List *)malloc(sizeof(List)); p = head; p->data = 1; //创建第一个结点 for (i =

for循环进阶

[引例] 输出一行10个“*” #include<cstdio> int main(){ printf("**********\n"); return 0; } 思考: (1)输出一行100个“*” (2)输出一行1000个“*” (3)输出…… 引入for #include<cstdio> int main(){ for (int i=1;i<=10;i++) printf("*"); return 0; } 要求:单步执行,观察循环

阅读OReilly.Web.Scraping.with.Python.2015.6笔记---Crawl

1.函数调用它自身,这样就形成了一个循环,一环套一环: from urllib.request import urlopen from bs4 import BeautifulSoup import re pages = set() def getLinks(pageUrl): global pages html = urlopen("http://en.wikipedia.org"+pageUrl) bsObj = BeautifulSoup(html,"lxml"

有环单链表

单链表有环的情况如上图所示,循环链表也属于有环的链表. 这里我们使用追逐法判断一个链表是否有环:设置两个指针slow和fast从头节点开始,slow每次移动一个节点,fast每次移动两个节点,如果fast遇到了NULL则表明链表没有环,停止循环.如果链表有环的话,那么这两个指针总会在某个位置相遇,相遇后停止循环.代码如下: 1 //追逐法判断链表是否有环 2 bool has_loop(){ 3 Node<Type> *fast=head,*slow=head; 4 //fast一定是走在前面

C语言--&gt;(练习)循环题目

循环回顾 1.for循环 for (初始表达式:循环条件表达式:增量表达式) { 循环语句: } for (初始表达式:循环条件表达式:增量表达式) { for (初始表达式:循环条件表达式:增量表达式) { 循环语句: } }  2.whil循环 while (条件表达式) { 循环体: } do{ 循环体: }while(条件表达式): continue  作用:结束本次循环,执行增量表达式,继续进行下一次循环 使用场合:循环里面 break 作用:跳出循环 使用场合:1.switch  

单链表环的问题

1.判断单链表是否有环 使用两个slow, fast指针从头开始扫描链表.指针slow 每次走1步,指针fast每次走2步.如果存在环,则指针slow.fast会相遇:如果不存在环,指针fast遇到NULL退出. 就是所谓的追击相遇问题: 代码示例如下: //判断链表是否有环,如果无环返回NULL ListNode* HasCircle(LinkList head){ if(head==NULL) return NULL; ListNode *slow=head; ListNode *fast=

bash编程基础及for循环

bash编程要点 变量: 本地变量:只对当前shell进程有效,对当前shell之外的其它shell(包括其父.子等)无效: 环境变量:对当shell进程及其子shell进程有效: 局部变量:仅在当前shell进程中的某段代码空间内有效:通常用于函数本地程序: 位置变量:$1, $2, ... $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数- 特殊变量: $# 是传给脚本的参数个数 $0 是脚本本身的名字 [email protected] 是传给脚本的所

LightOj 1221 - Travel Company(spfa判负环)

1221 - Travel Company PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB A travel company is planning to launch their bus service in a new route. So they conducted a survey and made a list of all possible roads connecting diff

戴明环

PDCA循环又叫戴明环,是美国质量管理专家休哈特博士首先提出的,由戴明采纳.宣传,获得普及,从而也被称为“戴明环”.它是全面质量管理所应遵循的科学程序. PDCA环 PDCA是英语单词Plan(计划).Do(执行).Check(检查)和Action(处理)的第一个字母,PDCA循环就是按照这样的顺序进行质量管理,并且循环不止地进行下去的科学程序. 1.P (plan) 计划,包括方针和目标的确定,以及活动规划的制定. 2.D (Do) 执行,根据已知的信息,设计具体的方法.方案和计划布局:再根据