循环控制

  循环控制

1. 循环:
反复不停的做同1件事情.

 a.
现实生活中的循环在反复不停的做什么事情?

 b.
现实生活中的循环一定会有停止的那1刻.

 2. 在代码中.我们会有这样的需求:
同1段代码反复不停的执行指定的次数.

 a.
实现的方式

1)
简单粗暴的方式: 那就是复制粘贴

 缺点:
代码冗余. 修改维护极度不方便.

 2) 循环结构:
将1段代码进行反复不停的执行指定的次数.

 代码简洁
并且 修改维护方便.


 3. 循环结构
 while循环结构 do-while循环结构
for循环结构

 他们都是来将1段代码进行反复不停的执行指定的次数,唯一的区别仅仅是语法上的区别.

 4.
while循环结构.

 a. 语法.
 while(bool表达式)
 {
 需要被反复不停的执行的代码;
 循环体;
 }

             int i = 0;  //循环增量 用来记录循环的次数.
while (i<5)
{
Console.WriteLine("我爱北京天安门");
i++;
}

 bool表达式: 比较表达式 逻辑表达式
bool类型的变量 bool类型的常量

 b.
执行步骤.

 第1步:
计算bool表达式的结果.

 1.1
如果结果为true。就执行循环体.循环体执行完毕之后.跳回第1步继续执行.

 1.2
如果结果为false。级结束while循环结构 继续往下执行.


 简单的说下:
 判断条件 如果为true 就执行循环体 执行完毕之后 再判断
直道条件为false的时候结束循环.


 5.
我们在写循环的时候,一定要避免死循环.

 如果1个循环是死循环
那么循环后面的代码永远不会被执行到.


 6.
要写循环的话 你必须确定如下两点:

 a.
那1段代码是需要被反复不停的执行的. 循环体.

 b.
循环结束的条件. 没有特殊的理由千万不要写1个死循环.

------------------------------------------------------循环的常用算法---------------------------------------------------------------

1. 循环的应用之一: 循环体确定. 循环的次数也确定

 实现的步骤:
 a. 定义1个int类型的循环增量i 并赋默认值为0
该变量用来记录循环的次数.

 b. while循环的条件写上
i<次数

 c.
在循环体中一定要记得 将循环增量i的值自增.


 eg:
 int i = 0;
 while(i<次数)
 {
 循环体;
 i++;
 }

 为什么这么写我们的循环就可以执行指定的次数.
 因为循环的条件表达式中 有循环增量i参与. 而i变量的值
每循环1次都会发生变化.

 前面几次的变化循环条件的结果都是true 当最后1次变化的时候
循环条件的值就变为false了.


 写循环的技巧:
 如何确定循环体: 那你就试着写代码.要实现功能
不用循环该如何实现.

 你在复制的代码 就是要被反复不停的执行的代码
就是你要找的循环体嘛.


 一定要注意: 循环增量的值不要忘记更改. 如果不改循环增量的值 只要第1次循环可以进入
那么这个循环就是1个死循环.


2.
循环应用之二: 循环体确定 循环的次数不确定. 但是我清楚循环结束的条件.

 实现的步骤.
 a.
先写1次循环体.

 b. 在写1个while循环 循环中放入我们的循环体. 循环的条件:
写上要再来1次的条件.

 c. 在循环体中一定要改 参与 循环条件表达式的变量的值 否则如果第1次可以进入循环
那么这个循环就会是1个死循环.


 eg:
 循环体;
 while(再次进入循环的条件)
 {
 循环体;
 一定要记得更改参与循环条件表达式的变量的值.
 }


         //请写1个程序 要求输入用户名. 只要不是admin 要求用户重新输入.
//接收用户输入用户名 的操作. 需要反复不停的执行,

Console.WriteLine("请输入用户名:");
string userName = Console.ReadLine();
//需不需要继续输入? 当userName的值不为"admin"的时候 重新输入.
while(userName!="admin")//== !=
{
Console.WriteLine("请输入用户名:");
userName = Console.ReadLine();
}

Console.WriteLine("OVER");

 注意:对于这种循环.
我们清楚的是循环结束的条件. 但是我们在while后面写的是循环继续的条件.
写的是循环结束的反面的条件.

 要么循环条件直接就写上反向的条件.
 要么就把结束的条件写上
然后再反1下.


 补充:
 我们的建议是在循环之前
先写1次循环体 。

为什么我们要先写1次循环体呢?
是因为我们要保证我们的循环无论如何至少要执行1次.

 那如果是这个目的的话
我们就可以简单1点.

 在写条件的时候 保证这个条件第一次是成立的
可以进去执行循环体.

 3. 循环应用之三: 遍历指定范围的数.

 循环结构的作用:将同1段代码进行反复不停的执行指定的次数.
 实现步骤.
 要将n-m之间的每1个整数打印出来.

 a. 定义1个循环增量i
并赋默认值为n;

 b. while循环的条件是 i<=m

 c. 在循环体中
循环增量i 就是我们想要遍历的数据.

 切记:
要在循环体后面更改循环增量的值 i++;


 int
i = n;

 while(i<=m)
 {
 循环增量i就是我们要遍历的数据;
 i++;
 }


//将100-200之间的整数打印出来.
int i = 100;
while (i < 201)
{
Console.WriteLine(i);
i++;
}

 4. 循环应用之四:
找出指定范围中符合特定条件的数.

 实现步骤.
 a.
遍历这个范围中的每1个整数.

 b.
判断遍历出来的这个数是不是符合特定条件的.


//请用户输入两个整数  1  20  那你就将两个数之间的整数打印出来.
//如果第1个数比第2个数大 就提示错误.
Console.WriteLine("请输入第1个数:");
int min = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第2个数:");
int max = int.Parse(Console.ReadLine());
if (min > max)
{
Console.WriteLine("输入错误,第1个数不能比第2个数大.");
}
else
{
//我们将min-max中的每1个整数打印出来.
int i = min;
while (i <= max)
{
Console.WriteLine(i);
i++;
}
}

 eg:
请n-m之间的符合特定条件的数:

 int i = n;
while(i<=m)
 {
 判断i是不是符合特定条件
如果符合打印出来.

 i++;
 }

 5. 循环应用之五: 求累加和
平均值.

 求1堆数的累加和.
 先准备1个桶变量
用来存储累加和.

 然后遍历这1堆数中的每1个数. 将遍历出来的数 往
桶中累加.

 遍历完毕后 桶 变量中的数据
就是这堆数的累加和.


 eg.
求n-m之间的所有的整数的累加和.

 int
sum = 0;

 int i = n;
 while(i<=m)
 {
 sum+=i;
 i++:
 }
 循环完毕以后
sum中的值 就是n-m之间的整数的累加和.

?





1

2

3

4

5

6

7

8

9

10

//请写1个程序  算出1-10之间的所有的数的累加和.

          int
sum = 0;//"桶变量" 用来存储累加和.

          int
i = 1;

          while
(i <= 10)

          {

              sum += i;

              i++;

          }

          Console.WriteLine(sum);

  

 6.循环应用之六:求最大值和最小值.
 找1堆数中的最大值:
 a.
声明1个擂台变量.

 b. 遍历这堆数中的每1个数. 将遍历出来的数和擂台变量中的数进行比较

 如果比的过就上去.
 c.
遍历完成以后,这个擂台变量中存储的就是这堆数中的最值.


//从控制台输入10个数 要把最大的那个数找出来.
int i = 0;
int max = int.MinValue;
while (i < 10)
{
Console.WriteLine("请输入第{0}个数:",i+1);
int num = int.Parse(Console.ReadLine());
if (num > max)
{
max = num;
}
i++;
}

Console.WriteLine(max);

 7.循环应用之七:
穷举

 1个1个的试.


//有1个数 这个数至少是2. 这个数除以2余数为1 除以3余数也为1 除以4余数1.

int num = 2;

while (num % 2 != 1 || num % 3 != 1 || num % 4 != 1)
{
num++;
}
Console.WriteLine(num);

8.
循环应用之八:计数


   //请统计1-100之内有多个数 可以被8整除.
int i = 1;
int j = 0;
while (i <= 100)
{
if (i % 8 == 0)
{
j++;
}
i++;
}
Console.WriteLine(j);

 9.
break关键字.

 a. break可以用在switch-case中.
代表立即结束整个switch结构.

 b.
break还可以用在循环体中. 代表立即结束当前所在的循环. 如果循环体的后面还有代码的话
不会执行.


 break的作用可以结束循环.

 break的应用场合.
 对于循环体确定,循环次数不确定,但是循环结束的条件确定的循环.
 我们十分清楚的是 循环结束的条件. 但是在写条件的时候
要写循环继续的条件.

 推荐的方式.
 a.
先来1个"死"循环.

 b. 在循环体中 判断循环是否应该结束.


            int i = 0;
while (i < 5)
{
Console.WriteLine(i);
if (i == 2)
{
break;
}
Console.WriteLine("A");
i++;
}

 10. continue
是1个关键字. 用在循环体中.

 在循环体中如果遇到continue
表示立即结束本次循环,准备进入下次循环,

 如果后面还有循环体的代码
不会执行.


  int i = 0;
while (i < 5)
{

i++;
if (i == 2)
{
continue;
}
Console.WriteLine(i);

}
Console.WriteLine("OVER");

---------------------------------------------------经典题目----------------------------------------------------


//请将1000-5000之间的符合条件的数打出来.
//各位数之和等于5的整数. 1004 1+0+0+4 1013
// 1987/1000 1987%1000 /100

int i = 1000;
while (i <= 5000)
{
//要判断i 的各位数之和是否等于5
int qian = i / 1000;
int bai = i % 1000 / 100;
int shi = i % 1000 % 100 / 10;
int ge = i % 10;
if (qian + bai + shi + ge == 5)
{
Console.WriteLine(i);
}
i++;
}


 //请用户从控制台输入用户名和密码 只要不是admin 888888 就重新输入.
//当输入3次都没有输入正确的话 那么就不给输入了.
//循环体: 接收用户的用户名和密码. 循环的次数:最多3次 结束的条件: 输入用户名和密码正确
string userName = "";
string pwd = "";
int i = 0;
//用户名或密码不正确 并且 循环的次数小于3次
while ((userName != "admin" || pwd != "888888") && i<3)
{
Console.WriteLine("请输入用户名:");
userName = Console.ReadLine();
Console.WriteLine("请输入密码:");
pwd = Console.ReadLine();
i++;
}

循环控制,布布扣,bubuko.com

时间: 2024-12-24 01:17:46

循环控制的相关文章

1.5编程基础之循环控制_29:数字反转

/* 1.5编程基础之循环控制 29:数字反转 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个整数,请将该数各个位上数字反转得到一个新数. 新数也应满足整数的常见形式,即除非给定的原数为零, 否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入 输入共 1 行,一个整数N. -1,000,000,000 ≤ N≤ 1,000,000,000. 输出 输出共 1 行,一个整数,表示反转后的新数. 样例输入 样例 #1: 123 样例 #2: -380 样例输出 样

8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,循环控制及其优化

上两篇博客 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,数据结构“栈”实现 研究了递归方法实现回溯,解决N皇后问题,下面我们来探讨一下非递归方案 实验结果令人还是有些失望,原来非递归方案的性能并不比递归方案性能高 代码如下: package com.newflypig.eightqueen; import java.util.Date; /** * 使用循环控制来实现回溯,解决N皇后 * @author [email pr

(五)PL/SQL运算符及优先级 | 条件控制 | 循环控制

一.运算符 PL/SQL语言有丰富的内置运算符,运算符提供的以下几种类型:  .算术运算符  .关系运算符  .比较运算符  .逻辑运算符  .字符串运算符 二.运算符优先级 算数运算符 运算符 操作符 ** 指数运算 +, - 加法,取反 *, / 乘法,除法 +, -, || 加,减,并置    关系运算符    比较运算符 =, <, >, <=, >=, <>, !=, ~=, ^=,  IS NULL, LIKE, BETWEEN, IN 比较    逻辑运算

mysql 循环控制

1.使用whileDROP PROCEDURE IF EXISTS `addstudent`;DELIMITER ;;CREATE PROCEDURE `addstudent`(iNum int)BEGIN declare vI int default 0; start transaction; while(vI < iNum) do insert into student(id,name) values(vI,concat('Andy',vI)); set vI = vI+1; end whi

06 js三大流程控制(顺序流程、分支控制、循环控制) 、js调式技巧

循环控制 ①For循环 for (var i =0;i< 10 ;i++ ) {  document.writeln("你好<br>"); } ②While先判断再执行语句 while (i< 10) {   document.writeln("hello<br>"); i++; } ③Do while 先执行再判断 var i=0; do {   document.writeln("ni hao <br>&

Java学习-005-初学常用的几个经典循环控制源代码

最近一段时间公司 App 改版,一直处在需求评审.代码评审.测试计划.测试用例.用例评审.用例执行.缺陷管理.测试总结的循环中,因而博客也好久没有更新了.虽然工作确实忙了点,但是也是自己懒惰了,从今天开始陆续整理之前学习 Java 时写的 Java 程序,并记录在博客中,供自己查阅,也希望能给初学 Java 的亲们一份参考,希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! 此文主要讲述在初学 Java 时,常用的几个经典的循环控制程序的源码整理.源代码测试通过日

perl循环控制

if 格式(类似于awk): if(表达式){                #空格可以忽略 语句 :}                     #elsif注意多了个s,elsif和else可以省略     elsif(表达式){             #语句块的{}必须有,可以为空 语句:} else{ 语句:} unless 格式: unless (表达式){ 语句;} while 格式: while(表达式){ 语句;} do while 格式: do {语句} while(表达式)

【JSTL】--JSTL表达式:c:forEach,varstatus/begin end/循环控制标签--drp215

jstl_core.jsp <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ page import="

JavaScript 循环控制

内容太简单 直接看代码吧 ! function () { var // 头部单 val 声明保证 变量不受预编译的影响 防止代码报错 array = Array( 100 ) // 创建一个测试数组 , end = array.length // 缓存数组长度 可以提高效率 特别是DOM操作 , count = 0 // ; for( ; count < end ; count++ ) // 因为使用单var声明 使用for表达式里的两个 ; 号 就好奇怪 { ; array[ count ]