主要内容
- 循环结构 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();