循环结构的特点:循环条件和循环操作
循环类别:
1.while循环
int i = 0;
while(表达式内容i < 100){
//循环内容
//代码
i++
}
//判断有多少个位数之和等于7的数
//例如:43, 4 + 3 = 7
int i = 100;
int a = 0;
while (i <= 10000)
{
int num = (i % 10000) / 1000 + (i % 1000) /100 + (i % 100) / 10 + i % 10;
if (num == 7 )
{
a += 1;
}
i++;
}
Console.WriteLine("有{0}个", a);
表达式内容为真执行循环体,一旦表达式内容为假,立即跳出循环,循环停止
2.break
break在switch语句中用来跳出switch语句
在循环体中,用来跳出本层循环(通常与if连用)。
//战斗场景
//玩家攻击力
int playerAtk = 8;
//随机敌人血量,随机是左闭右开[100,200)
int enemyHp = new Random().Next(100,200);
while (true) {
//闪避概率
if (new Random().Next(0, 10) > 7) {
Console.WriteLine("诶~走位~");
continue;
}
//攻击 判断敌人血量是否大于0
if (enemyHp > 0) {
//攻击成功,敌人血量减去玩家攻击力
enemyHp -= playerAtk;
Console.WriteLine("造成{0}伤害",playerAtk);
}
else
{
//敌人血量小于0,玩家胜利
Console.WriteLine("战斗胜利");
break;
}
}
3.continue
在循环中用来结束本次循环(continue后面的代码不再执行),进入下次循环(通常与if连用)。
//输出不是3的倍数的数
int a = 1;
while (a <= 100)
{
if (a % 3 != 0)
{
Console.WriteLine("{0}不是3的倍数",a);
a++;
}
else
{
a++;
continue;
}
}
4.do…while循环
do{
//循环内容
}while(条件表达式)
先执行循环体,再判断条件,知道条件不成立,循环结束。
int num = 0;
int i = 1;
do
{
num += i;
i++;
} while (num <= 10000);
num = num - i;
i = i - 1;
Console.WriteLine("最大值是{0},i={1}", num,i);
5.for循环
for(循环初始变量;循环条件;循环增量){
//循环体
}
循环条件为真,执行循环体
循环条件为假,跳出循环。
for (int i = 1;i <= 200;i++)
{
//提取个位数
int num1 = i % 10;
//提取十位数
int num2 = i % 100 / 10;
//提取百位数
int num3 = i % 1000 / 100;
//限制条件个位数不等于7,十位数不等于7,百位数不等于0,i不能整除7
if(num1 != 7 && num2 != 7 && i % 7 != 0 && num3 != 0)
{
Console.WriteLine("i = {0}",i);
}
}
总结
1.for循环最常用,通常用于知道循环次数的循环
2.while也很常用,通常用于不知道循环次数的循环
3.do…while循环不是很常用,通产用于需要先执行一次的循环
4.beak用于跳出本层循环,continue用于结束本次循环,通常与if连用。
利用循环输出9x9乘法表
for (int i = 1; i < 10; i++)
{
//j < i限制输出,不用输出多余的乘法运算
//不清楚啥意思可以试试j < 10
for (int j = 1;j <= i;j++)
{
//输出每行的乘法运算
Console.Write("{0} x {1} = {2} \t", j, i, j * i);
}
//用于换行
/*
WriteLine本身自带换行,此处相当于换了两行
Console.WriteLine();和Console.Write("\n");和Console.WriteLine("\n");
效果都差不多,个人看着舒服不舒服而已啦
\n换行符
\t空格,相当于按了tab键
*/
Console.WriteLine("\n");
}