c#控制语句和循环

控制语句

流程控制:

在c#中一般有三种结构:顺序结构、选择结构、循环结构

  • 顺序结构:程序是从上到下执行,从左到右执行,如果前面的代码没有加载,那么后面的代码是永远不会加载的(dead code/unreach code),对于程序来说,默认的结构就是程序结构。

  • 选择结构:程序执行到某个地方的时候,可以让程序做判断有选择的去执行,某段代码或某行代码。if-else结构,switch-case结构。

  • 循环结构:程序可以有条件的重复执行,某行代码或某段代码。当程序中设定的条件满足时,会让某段代码或某行代码不断的重复执行,直到设定的条件不再满足时,跳出我们设置的循环语句。for循环(简化版->for-each结构),

选择结构

if语句-----单支语句(支=情形)

if else----双支语句

if else if----多支语句

注意:if--else语句情形之间是互斥的,程序只能选择一种情形加载,不会加载两种或者两种以上情形

if 语句

C# 中的 if 语句用于条件判断,其中包含一个布尔表达式,后面跟随着若干要执行的代码,当布尔表达式为真时,后面跟随的代码就会执行,if 语句的语法格式如下:

if(布尔表达式){
  //如果bool表达式为真时要执行的代码;
}
//定义考试成绩
double ChengJi=472;
if(ChengJi>=471)
{
    //输出可以上本科学校
}

if else 语句

C# 的 if else 语句同样用于条件判断,它比 if 语句中多出了一个 else 语句,当布尔表达式为假时,执行 else 语句块中的代码,语法格式如下所示:

if(布尔表达式){
  表达式为真时要执行的代码;
}else{
  表达式为假时要执行的代码;
}
//你想上厕所
chas xb='男';
    if(xb=='男'){
        //去男厕所
    }
else{
    //去女厕所
}

if else if 语句

C# 的 if else if 语句其实就是一个 if 语句后面跟随着若干个 else if else 语句,语句中可以包含多个条件表达式,程序会依次判断这些条件表达式,当条件表达式为真时则执行后面语句块中的代码,如果没有为真的条件表达式则执行 else 语句块中的代码,其语法格式如下所示:

需要注意的是,当布尔表达式为真,且成功执行它后面语句块中的代码后,会跳出 if else if 语句,语句中的其它部分不会再被执行。

if(布尔表达式 1){
  布尔表达式 1 为真时要执行的代码;
}else if(布尔表达式 2){
  布尔表达式 2 为真时要执行的代码;
}else if(布尔表达式 3){
  布尔表达式 3 为真时要执行的代码;
}
...
else{
  当所有布尔表达式都为假时要执行的代码;
}

C# switch语句

C# 中的 switch 语句有些类似于《if else if 语句》,都可以根据表达式执行某个的语句块,其语法结构如下:

//只能做一个相等判断,没法直接进行范围判断
switch(表达式/变量){ 
  case 常量值1//变量的变化值://可以放整数、小数、字符串、bool
  //表达式的值为 value1 时,要执行的代码
    break;
  case 常量值2:
  //表达式的值为 value2 时,要执行的代码
    break;
  case 常量值3:
  //表达式的值为 value3 时,要执行的代码
    break;
  ... ...
  default:
  //没有与表达式相匹配的值时,要执行的代码
    break;
}

使用 switch 语句时必须遵守以下规则:

  • 在一个 switch 语句中可以有任意数量的 case 语句,每个 case 关键字后面要跟一个与表达式比较的值和一个冒号;

  • case 关键字后面的值必须与 switch 中表达式的值具有相同的数据类型,并且必须是一个常量(也可以理解为是一个固定的值,不会随程序的运行发生改变);

  • 当表达式的值等于 case 中的值时,就会执行 case 后面的语句,在遇到 break 关键字时停止;

  • 当遇到 break 关键字时,switch 语句会停止运行,并跳转到 switch 语句以外的下一行代码继续运行;

  • 并不是每一个 case 语句后面都需要包含 break 关键字,如果 case 语句为空(case 语句后面没有要执行的代码),则可以不包含 break 关键字,这时程序会继续执行后续的 case 语句,直至遇到 break 关键字为止;

  • C# 不允许从一个 case 语句连续执行到下一个 case 语句,因此如果 case 语句中包含要执行的语句,就必须包含 break 关键字或其他跳转语句;

  • 一个 switch 语句的末尾可以有一个可选的 default(默认选项),当所有 case 语句都不能与表达式相匹配时则会执行 default 部分中的代码。

  • C# 不支持从一个 case 语句跳转到另一个 case 语句,如果要从一个 case 语句跳转到另一个 case 语句的话,可以使用 goto 语句,例如goto default

  • c# 中switch-case语句中case情形之间可以并列

    case 9:case 10:

    循环结构

    在什么场景下会用到循环结构?

    1.在有限的范围内,重复的执行一些事情或者是某些动作(内容不一定是完全相同的

    2.假设这个范围是无限的,那么这个循环是没有意义的。

    for 循环

    使用for循环可以重复执行一部分代码,

    //语法结构
    fo(1.初始化语句;2.判断条件;3.变化语句){
        //循环代码
    }
    //先执行初始化语句,然后执行判断条件,接下来执行循环体代码,然后执行变化语句,然后再返回到判断条件

    备注:

    只有当判断条件为真true时,才会执行for循环结构中的循环代码

//第几年可以达到100000人
double a = 5000;
int i = 2;
for (;a < 100000; i++)
{
     a= (a * 0.25 )+ a;   //增加25%  
}
 Console.WriteLine($"到第{i}年达到100000人");
//那一年可以累计100000人
int a=100;//第一年为100人
int nian=1;
int number=100;
for(;a<100000;nian++){
      number = (int)(number * 0.3 + number);
    a = a + number;
}
Console.WriteLine("到第{0}年累计到100000,具体{1}人", nian, a);
嵌套循环

在 C# 中,循环语句还可以嵌套使用,也就是说我们可以在一个 for 循环内再使用一个或多个 for 循环。

``` *
    **
    ***
    ☆☆☆☆
    ☆☆☆☆☆
    ☆☆☆☆☆☆
    ☆☆☆☆☆☆☆
*/
for(int i = 1;i<=7;i++)
{
    for(int j = 1;j<=i;j++)
    {
        Console.Write("*");
    }
    Console.WriteLine();// 换行
}
/*
       *
      ***
     *****
    *******
   *********
  ***********
 *************
 */
for(int i = 1;i<=7;i++)
{
    // 先打印空格
    for(int j = 1;j<=7-i;j++)
    {
        Console.Write(" ");
    }
    // 再次打印☆
    for(int k = 1;k<=(2*i-1);k++)
    {
        Console.Write("*");
    }
    Console.WriteLine();
}
无限循环

for 循环中,如果判断条件永远不会为假,那么循环将变成无限循环(也叫死循环),我们在定义循环语句时应尽量避免这种情况的出现。

while循环
//语法结构
while(布尔表达式){
    //循环体代码 当布尔表达式为真true时,执行循环体代码
}
//进阶版
//1.定义初始语句,定义一个变量
while(2.布尔表达式)//表达式中用到了上面定义的变量
{
    //3.循环体代码
    //4.变化语句(迭代语句)
}
public static void Main(string[] args)
{
    // 计算1-100之间的(偶数和),使用while循环实现
    int i = 1;
    // 定义一个累加和变量
    int sum = 0;
    while(i <= 100)
    {
        // 相加 ---偶数和
        if(i % 2 == 0)
        {
            sum = sum + i;
        }
        i++;
    }
} 
//温度转换
double a = 1;
double b = 0;
Console.WriteLine("摄氏度\t\t华氏度");
while (a <= 10)
{
    
    double c = b * 9 / 5 + 32;
    Console.WriteLine("{0}\t\t{1}",b,c);
    b = b + 20;
    a++;
}

do while循环

//语法结构
/*
do
{
//循环代码
}while(布尔表达式);
*/
//进阶版
/*
//1.定义一个初始变量---初始化语句
  do
  {
  //2.循环体代码
  //3.变化语句---迭代语句
  }while(布尔表达式);//4.判断条件
*/
// 计算1000以内有多少个水仙花数,分别是谁?
// 水仙花数:它是一个三位数,百位的立方+十位的立方+个位的立方和等于这个数本身
int count = 0;
// 取值范围:100,1000
int i = 100;// 1
do
{
    // 先获取三位数的百位十位和个位数字
    int bai = i / 100;
    int shi = i / 10 % 10;
    int ge = i % 10;
    int sum = bai*bai*bai + shi*shi*shi+ge*ge*ge;
    if(sum == i)
    {
        Console.WriteLine(i);// 2
        count++;// 累加1
    }
    // i往大的方向递增1
    i++;// 3
}while(i < 1000);// 4
} 

随机值使用

Random类

可以实现让程序随机一个指定范围的任意小数或者是任意整数

//使用步骤:两步
//第一步:Random random = new random();
//第二步:1.如果随机整数值-->int random.Next(a,b);//[a,b) a--->最小值  b---> 最大值  包含a但是不包含b
          //2.如果是随机小数值-->double ranNumber = random.NextDouble();//[0.0,1.0)包含0但是不包含1
// 比如说:随机一个1-100之间的整数值
// 第一步
Random random = new Random();
// 第二步
int ranNumber = random.Next(1,101);
Console.WriteLine("在1-100之间随机的整数值为:{0}",ranNumber);
​
// 假设我想要让程序随机一个小数值
Random random2 = new Random();
double ranNumber2 = random2.NextDouble();
Console.WriteLine("在0-1之间随机的小数值为:{0}",ranNumber2);// 0-1之间的小数值
} 

你可能感兴趣的:(c#控制语句和循环)