流程控制语句
必要性:我们实际生产生活中我们的任务(事情)的进行顺序不可能都是依次单一执行
流程控制---一件事情进行的逻辑先后顺序 程序目前为止都是从main方法中代码依次执行(从上往下)同时也不会把执行过的语句又去执行
顺序结构:程序从上往下 依次执行 而且不会重复执行
分支结构:if if-else
选择结构:if-else if switch-case
循环结构:while do-while for foreach
关键字:break continue
******************详细讲解
顺序结构:程序从上往下 依次执行 而且不会重复执行
分支结构----用于存在两种可能性,二选其一的时候
if:如果
if(条件)
{
语句;
}
if - else:如果,否则
if(条件)
{
语句;
}
else
{
语句;
}
备注: else一般和离它最近的if配对 同时if else各自里面可以继续嵌套
选择结构-----用于多种可能性,当你的条件有多种可能性的时候同时每种可能性可能是一个区间范围
if-else if
if(条件1)
{
语句;
}
else if(条件2)
{
语句;
}
else if(条件3)
{
语句;
}
............
else
{
语句;
}
switch-case----用于多种可能性,当你的条件有多种可能性的时候同时每种可能性是具体的一个值
switch(变量或者表达式)
{
case 值1:
语句;
break;
case 值2:
语句;
break;
case 值3:
语句;
break;
default:
语句;
break;跳出switch结构
}
default:当所有条件都不满足时,执行default语句
break:跳出switch结构
循环结构-----
for循环 语法结构--当有重复的事情发生的时候 并且重复次数还是固定的时候用for
for(表达式1;表达式2;表达式3)
{
语句;
}
说明:表达式1一般是赋值表达式 表达式2一般是关系表达式 表达式3一般是自增或者自减
{ }叫做循环体 循环体里面是你要执行的语句
执行流程:表达式1--》执行表达式2 --》(假则跳出循环)如果表达式2为真--》执行循环体中语句
----》表达式3--》表达式2--》如果表达式2为真继续循环体 为假跳出循环
循环变量 循环条件 循环体
表达式2 表达式1 表达3其实是可以省略的
关键字:break continue
break:跳出整个循环
continue:跳出当前循环
循环嵌套(for循环中可以再套一个for循环)
什么时候用循环嵌套:当每件重复的事情里又有重复的事情发生的时候
while循环 语法结构--循环次数不固定的时候可以想到while
while(循环条件)
{
语句
}
循环条件一般是关系表达式或者bool变量
真--》执行循环体
假--》跳出循环
do-while 循环--循环次数不固定 但是至少执行一次想到do-while
do
{
}
while(循环条件);
先执行do的循环体里的语句 --》判断循环条件--》
真--》继续执行
假跳出循环(至少会执行一次)
循环条件一般是关系表达式或者bool变量
常见习题:
1、求1-1000的素数
求1-1000之间所有质数(除了1和自身还能被整除的数不是素数)
//思路:1 - 300重复判断数,for循环,循环变量i = 1,循环条件i <= 300,循环体 - 判断是否素数(用1 到自身的数去重复除-内循环:循环变量j = 1,循环条件j <= i,循环体i / j)
bool YorN = true;
for (int i = 1; i <= 1000; i++)
{
YorN = true;
for (int j = 2; j < i; j++) //除数,在2到i之间,不包括1和i本身
{
if (i % j == 0)
{
YorN = false; //进这个循环就不是素数,标记为false
break; //出现一次整除就跳出
}
}
if (YorN == true) { Console.WriteLine($"{i}"); }
}
Console.ReadKey();
2、斐波拉契排列
有一组数 1、1、2、3、5、8、13、21、34...算出第50个数-- 斐波那契排列
int f1 = 1, f2 = 1; //第三个数f1==f1+f2 , 第四个数==第二个数+第三个数 f2==f2+f1
for (int i = 1; i <= 10; i++)
{
Console.Write($"{f1}{f2}\t");
if (i == 5) { Console.WriteLine(); } //打印第五次的时候换行
f1 = f1 + f2;
f2 = f2 + f1;
}
Console.ReadKey();