zoukankan      html  css  js  c++  java
  • (7)C#流程控制

    一、判断语句

    if

    if可以单独使用,else不能单独使用

    int a=5;
    if(a>5)
    {
    Console.WriteLine("aaa);
    }
    Console.WriteLine("xxx");//只执行这一句

    if...else

    //括号里判断真或假,如果为真则执行if里的语句然后跳过else,再执行...
    if(a==b)
    { }
    //如果if括号为假,那么跳过if{},执行else{},再往下执行 else { } .........

    if 括号里一般是“==”判断左右是否相等,或者只有一个变量。

    当{}中只有一句代码时,可以省略{}

    if(a==b)
          ;
    else      ;
    ........

    if..else嵌套

    当不是只单纯的判断从二选一的问题时,可能有多种答案就要用到嵌套或switch等语句,反正单个if else是解决不了了,比如判断星期,或根据学生成绩判断优良中差等。

    举个例子:

    学生考试的成绩按照分数来划分等级

    0-59不及格,60-69 差,70-79 中,80-89 良,90-100 优

    经常看到有三种嵌套法

    1、从if(){}里面嵌套 if....else

    首先a是一个0-100区间的整数,在这种情况下

    if(a>=60)
    {
    
      if(a>=70)
         {
     
            if(a>=80&)
            {
                    ........里面就不写了
            }
            else//a>=70且a<80
            Console.WriteLine("");
      }
        else//a>=60 且a<70
        Console.WriteLine("");
    }
    
    else//a<60
    
    Console.WriteLine("不及格");            

    这方式写代码写着费劲,看代码的人看的蒙圈

    在else里嵌套if  else

    if(a>90&&a<=100)
         Console.WriteLine("");
    else 
    { 
            if(a<80) 
            {
                if(a<70)
                   {
                            ..........
                   }  
    
                else
                    Console.WriteLine("良");   
            } 
            else
                Console.WriteLine("");   
    }        

    1和2一个特点就是代码看着很乱

    3、

    if()

    else if() 

    else if()     的方式

    if(a>=90)
        Console.WriteLine("");  
       else if(a>=80)   //a>=80&&a<90
          Console.WriteLine("");  
         else if(a>=70)
              Console.WriteLine("");  
                else if(a>=60)
                 Console.WriteLine(""); 
                 else if(a<60)
                    Console.WriteLine("不合格"); 

    这样的写法要比上面两种方法清晰多了

    假设 

      把 a>=90看做A, a>=80看做B, a>=70看做C,

      则D肯定是在 (!A && !B && !C 的)交集里。

    switch

    根据swtich传进来的数值,找到到对应的case,比如传进来一个变量 r ,系统会从switch{}里找有没有一个case r:找到后就依次往下执行后面的所有语句,包括最后的default.如果语句遇到break,则跳出本层。

    还是以学生成绩举例子

    int A=int  (score/10);
    
    String B;
    
    switch(A)
    
    {
        case 10:case 9:
            B=“您的成绩为优秀”;
        case 8:
            B=“您的成绩为良”;
            break;
               .....
        default
            B=“您的成绩不合格”;
    }

     如果你的成绩是80,也是就找到case 8: ,它会执行B=“您的成绩为良”;这一句,在执行break;跳出switch。

    注意:

    1、switch 变量的数据类型只能用 bool,byte,short,int,long,char,String这几个。

    2、case 标签必须是唯一的。不然两个case 9: 系统无法判断从哪个case 9开始执行。

    3、case 标签必须是一个常量表达式

     什么是常量表达式?

    常量表达式里面只有常量的式子,比如2+2是常量表达式,如果定义常量a,那么a+2也是常量表达式。

    但是如果a是变量,就不是常量表达式了。

    4、同时满足几种情况时执行同一段代码 例如上面的case 9和case 10。

     二、循环语句

    while

    while(布尔表达式)
    {
    
    }

    当while()的表达式为true时,执行{}里的的句子,为false时,不执行{}里的语句直接跳出。

    想要让while循环起来的话通常在{}里有一个变量通过自加自减等方式影响着布尔表达式,到达一定条件后使得布尔表示的值为false,从而跳出循环

    int i=0;
    while(i!=10)
    {
        i++;
    }

    do...while

    do..while循环{}会的特点是先执行一次

    int i=0
    do
    {
    i++;
    }
    while(i!=10)

     for语句

    for(初始化控制变量;布尔表达式;更新控制变量)
    {
    语句
    }
    for(int i=0;i<10;i++)
    {
     Console.WriteLine(i);
    }

    首先i进行初始化,然后判断i<0是否成立,如果成立则去执行括号的内容,执行一次{}后执行对变量进行更新执行i++,然后再判断i<0的真假,如果为真继续循环,如果为假结束语句。

    注意:

    1、初始化只会发生一次。

    2、语句要执行一次后,才会执行更新控制变量。

    3、更新控制变量后,会重新判断布尔表达式。

    for语句的三个部分都可以省略,但是;必须要有,无论怎么省略for循环里的两个;永远都要有

    for(int i=0; ;i++)//如果省略布尔表达式,则它默认为true
    {
    
    }

     多个初始化变量

    for中可以提供做个初始化变量

    for(int i=0,j=0;i<5;i++,j++)
                {
                Console.WriteLine(i);
                Console.WriteLine(j);
                }

    for语句的作用域问题

    1、如果i是在for()里初始化控制变量这个位置被初始化,则i的作用范围只能在for里  

    for(i=0;1<10;i++) //只能作用在这一个for里
    {
    Console.WriteLine("i");
    }

    2、如果有连个for,里面设i,这两个i完全没有联系。

    for(i=0;1<10;i++) 
    {
    Console.WriteLine("i");
    }
    for(i=0;1<20;i+=2) //和1里的i没有任何关系,各自在自己的for里起作用
    {
    Console.WriteLine("i");
    }

    3、如果要在for外进行输出化,在初始化控制变量的位置进行赋值,则这个变量在for里面外面都有效。

    int i ;
    for( i=3;i<10;i++)
    {
         Console.WriteLine(i);               
    }
    Console.WriteLine(i+2);//最后i=12    

     三、跳转语句

    break和continue的区别

    break的作用是跳出这一层。如果break语句包含在嵌套循环里,它只跳出最里面的循环。

    continue的作用是跳出本次循环,进入到下一次循环。

    int i=0;
    while(true)
    {
        i++;
        if(i<10)
            continue;//直到i=10时才执行else
            Console.WriteLine("我想看看世界");//受continue的影响这句话永远执行不到。
        else
            break;//跳出离它最近的循环,虽然他有层if但if不是循环,所以他会往外找。
    }

    return退出当前方法,如果方法有返回类型,return必须有返回值。如果方法为void,方法中不能出现return语句

    goto 可以直接跳转到程序中用标签指定的另一行

                bool b = true;
                if (b)
                {
                    goto lable1;
                }
                Console.WriteLine("aaa");
                lable1:
                Console.WriteLine("bbb");
                Console.ReadKey();

    goto语句有两个限制,不能跳转到想for循环这样的代码块,也不能跳出类,不能退出try catch后面的finally块。

    goto不是面向对象的好方式。

       

  • 相关阅读:
    continue语句及小案例
    break语句和break版猜数字游戏
    python 用while语句打印99乘法表
    python2中引入python3中print函数的语法的语句
    【猜数字 小游戏】
    【while循环】
    代码块和缩进
    使用vs2015编写c语言的方法
    This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details
    矩阵相乘法则和技巧
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/5603941.html
Copyright © 2011-2022 走看看