zhyDaDa的个人站点

主要内容

  • 循环结构 while
  • 关键字 break
  • 练习*3
  • do-while 结构

循环结构 while

  • while循环:
while(循环条件)
{
    循环体
}
  • 执行过程:
  • 循环运行到while处
  • 首先判断循环条件是否成立
  • 成立(即 返回true), 执行循环体
  • 执行一遍, 返回1步骤
  • 一旦不成立, 跳出while循环
  • 一般总有一行代码, 能够改变循环条件, 使条件不再成立
  • 循环条件永远成立的循环, 称之为 \”死循环\”

一定要分析出来 循环体循环条件
琢磨一遍, 写在注释里, 养成思考的习惯!

关键字break的用法

  • 作用:
  • 跳出switch-case结构
  • 跳出当前的while循环

  • 特点: 一般不单独使用, 配合if使用

小练习*3

  • 练习1: 输入班级总人数, 依次输入学员的成绩, 计算平均成绩和总成绩
bool b = true;
//避免出现异常就退出, 设置大循环
while (b) {

    //输入班级总人数, 依次输入学员的成绩, 计算平均成绩和总成绩
    //循环体: 接收成绩, 累加成绩
    //循环条件: 循环次数小于总人数

    //声明变量
    int number = 0;
    int i = 0;
    double sum = 0;

    //接收总人数
    Console.WriteLine("输入班级总人数(正整数)");
    try
    {
        number = Convert.ToInt32(Console.ReadLine());

        if (number > 0)
        {
            try
            {
                //按总人数展开循环, 依次接收成绩累加
                while (i < number)
                {
                    Console.WriteLine("请输入第{0}位学员的成绩", ++i);
                    sum += Convert.ToDouble(Console.ReadLine());
                }

                Console.WriteLine("这个班级总共{0}位学员\n总成绩是{1}\n平均成绩是{2:0.00}", number, sum, sum / number);
                b = false;  //这行代码能够运行就意味着程序生效, 退出循环

            }   //输入成绩不符合要求的try 结束括号
            catch
            {
                Console.WriteLine("成绩输入不符合规范, 程序退出");
            }
        }   //判断number是正数的结束括号
        else
        {
            Console.WriteLine("人数应当是正整数, 程序退出");
        }

    }   //这是try number接收的结束括号
    catch
    {
        Console.WriteLine("成绩输入不符合要求, 程序退出");
    }   //这是catch number接收的结束括号

    if (b)  //如果bool还是true, 就说明最终结果还未出现, 那么提示程序重启
    {
        Console.WriteLine("=========\n程序重启, 请认真填写\n再也没有什么嘻嘻哈哈了\n=========");
    }

}   //这里是最外圈的循环结束括号
Console.ReadKey();

注意:做题时, 先分析出来所需要的变量, 提前声明, 免得作用域出错
注: 以上代码是自己写的

  • 练习2: 老师问:”这道题你会做了吗?” 回答y, 就放学; 回答n, 就再讲一遍, 再问一遍.
  • 一直到学生回答y才放学
  • 直到学生会or讲了5遍还不会, 都要放学
//循环体: 老师提问, 学生回答, 老师讲题
//循环的两个条件: 学生不会 且 讲的次数小于5遍

string answer = "";
int i = 0;

while (answer != "y" && i < 10)
{
    Console.WriteLine("这是我第{0}遍给你讲题, 你会了么?(y/n)", ++i);
    answer = Console.ReadLine();

    //如果回答是 就跳出循环
    if (answer == "y")
    {
        Console.WriteLine("会了就放学吧!");
        break;
    }
    else if (i == 5)    //第五次还不会就放学
    {
        Console.WriteLine("讲了5遍还不会也没必要讲了, 还是放学吧!");
        break;
    }
}

Console.ReadKey(); 

暂时不考虑非常严谨的异常处理

  • 练习3: 2006年 学员80000人, 每年增长25%, 问哪一年人数达到20万人?
//循环体: 人数每年增长25%
//循环条件: 人数<20万

double people = 80000;
int year = 2006;
while (people < 200000)
{
    people *= 1.25;
    year++;
}
Console.WriteLine("到{0}年时, 人数达到20w", year);
Console.ReadKey(); 

> 简单数学, 所以数学功底要扎实

do-while 结构

  • 语法:
do
{
    循环体
}while(循环条件);
  • 执行过程:
  • 首先执行一遍循环体
  • 拿着执行结果 去判断循环条件
  • 如果成立, 继续执行do中循环体
  • 不成立就跳出循环

  • 特点: 先循环, 再判断; 至少执行一次

    注意: while后面带有封号

小练习

  • 练习: 不断输入学生姓名, 输入q结束
string name = "";
do
{
    Console.WriteLine("输入姓名, 输入q结束");
    name = Console.ReadLine();
} while (name != "q");        

Console.ReadKey();
  • 题目: 不断要求用户输入一个数字(假定均是正整数), 用户输入end时, 显示刚才输入的数字中最大的数字
string input = "";
int max = 0;
while (input != "end")
{
    Console.WriteLine("输入正整数, 若输入end将显示最大值");
    input = Console.ReadLine();
    if (input != "end")
    {
        try
        {
            int number = Convert.ToInt32(input);
            //打擂台
            if (number > max)
            {
                max = number;
            }
        }
        catch
        {
            Console.WriteLine("输入不符合规范, 重新输入");
        }
    }
    else    //end
    {
        Console.WriteLine("最大值是{0}", max);
    }
}
Console.ReadKey();
Avatar photo
我是 zhyDaDa

前端/UI/交互/独立游戏/JPOP/电吉他/游戏配乐/网球/纸牌魔术

发表回复