C#入门经典—第四章

来源:互联网 发布:ubuntu opengl 编辑:程序博客网 时间:2024/05/16 06:41

第四章 流程控制

本章内容:

  • 布尔逻辑的含义及其用法
  • 如何控制代码的分支
  • 如何编写循环代码
控制程序流的两种方式:分支和循环

分支是有条件的执行代码,条件根据计算结果来定。

循环重复执行相同的语句。

4.1 布尔逻辑

关系运算符

运算符==!=<><=>=类别二元二元二元二元二元二元运算符!&|^&&||类别一元二元二元二元二元二元

4.1.1 布尔赋值运算符

布尔赋值运算符把布尔比较与赋值组合起来。

运算符&=|=^=类别二元二元二元

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{    class Program    {        static void Main(string[] args)        {            Console.WriteLine("Enter an integer:");            int myInt = Convert.ToInt32(Console.ReadLine());            bool isLessThan10 = myInt < 10;            bool isBetween0And5 = (0 <= myInt) && (myInt <= 5);            Console.WriteLine("Integer less than 10?{0}",isLessThan10);            Console.WriteLine("Integer between 0 and 5?{0}",isBetween0And5);            Console.WriteLine("Exactly one of the above is true?{0}",isLessThan10^isBetween0And5);            Console.ReadKey();        }    }}

4.1.2 按位运算符

取反运算符:~(一元)

左移运算符:<<(二元);右移运算符:>>(二元)

<<=,>>=(一元)

4.1.3 运算符优先级的更新

运算符优先级(由高到低)++,--(用作前缀),(),+,-(一元),!,~*,/,%+,-<<,>><,>,<=,>===,!=&^|&&||=,*=,/=,%=,+=,-=,<<=,>>=,&=,^=,|=++,--(用做后缀)

4.2 goto语句

4.3 分支

C#的3种分支技术:

  • 三元运算符
  • if语句
  • switch语句

4.3.1 三元运算符

这种运算符适合简单的赋值语句。

4.3.2 if语句

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{    class Program    {        static void Main(string[] args)        {            string comparison;            Console.WriteLine("Enter a number:");            double var1 = Convert.ToDouble(Console.ReadLine());            Console.WriteLine("Enter another number:");            double var2 = Convert.ToDouble(Console.ReadLine());            if (var1 < var2)                comparison = "less than";            else            {                if (var1 == var2)                    comparison = "equal to";                else                    comparison = "greater than";            }            Console.WriteLine("The first number is {0} the second nuber.", comparison);            Console.ReadKey();        }    }}

4.3.3 switch语句

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{    class Program    {        static void Main(string[] args)        {            const string myName = "karli";            const string sexyName = "angelina";            const string sillyName = "ploppy";            string name;            Console.WriteLine("What is your name?");            name = Console.ReadLine();            switch (name.ToLower())            {                 case myName:                    Console.WriteLine("You have the same name as me!");                    break;                case sexyName:                    Console.WriteLine("My,what a sexy name you have!");                    break;                case sillyName:                    Console.WriteLine("That's a very silly name!");                    break;            }            Console.WriteLine("Hello {0}!",name);            Console.ReadKey();        }    }}

ToLower():转换为小写。

4.4 循环

4.4.1 do循环

执行方式:执行标记为循环的代码,然后进行一个布尔测试,如果结果为true就执行这段代码,结果为false,就退出循环。

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{    class Program    {        static void Main(string[] args)        {            double balance, interestRate, targetBalance;            Console.WriteLine("What is your current balance?");            balance = Convert.ToDouble(Console.ReadLine());            Console.WriteLine("What is your current annual rate (in %)?");            interestRate = 1 + Convert.ToDouble(Console.ReadLine()) / 100.0;            Console.WriteLine("What balance would you like to have?");            targetBalance = Convert.ToDouble(Console.ReadLine());            int tatalYears = 0;            do            {                balance *= interestRate;                ++tatalYears;            }            while (balance < targetBalance);            Console.WriteLine("In {0} year {1} you will have a balance of {2}.", tatalYears, tatalYears == 1 ? " " : "s",balance);            Console.ReadKey();        }    }}

4.4.2 while循环

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{    class Program    {        static void Main(string[] args)        {            double balance, interestRate, targetBalance;            Console.WriteLine("What is your current balance?");            balance = Convert.ToDouble(Console.ReadLine());            Console.WriteLine("What is your current annual rate (in %)?");            interestRate = 1 + Convert.ToDouble(Console.ReadLine()) / 100.0;            Console.WriteLine("What balance would you like to have?");            targetBalance = Convert.ToDouble(Console.ReadLine());            int tatalYears = 0;            while (balance < targetBalance)             {                balance *= interestRate;                ++tatalYears;            }                       Console.WriteLine("In {0} year {1} you will have a balance of {2}.", tatalYears, tatalYears == 1 ? " " : "s",balance);            if (tatalYears == 0)                Console.WriteLine("To be honest,you really didn't need to use this calculator.");            Console.ReadKey();        }    }}

4.4.3 for循环

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{    class Program    {        static void Main(string[] args)        {            double realCoord, imagCoord;            double realTemp, imagTemp, realTemp2, arg;            int interations;            for (imagCoord = 1.2; imagCoord >= -1.2; imagCoord -= 0.05)            {                for (realCoord = -0.6; realCoord <= 1.77; realCoord += 0.03)                {                    interations = 0;                    realTemp = realCoord;                    imagTemp = imagCoord;                    arg = (realCoord * realCoord) + (imagCoord * imagCoord);                    while ((arg < 4) && (interations < 40))                    {                        realTemp2 = (realTemp * realTemp) - (imagTemp * imagTemp) - realCoord;                        imagTemp = (2 * imagTemp * realTemp) - imagCoord;                        realTemp = realTemp2;                        arg = (realTemp * realTemp) + (imagTemp * imagTemp);                        interations+=1;                    }                    switch (interations % 4)                    {                         case 0:                            Console.Write(".");                            break;                        case 1:                            Console.Write("o");                            break;                        case 2:                            Console.Write("O");                            break;                        case 3:                            Console.Write("@");                            break;                                            }                                   }                Console.Write("\n");                           }            Console.ReadKey();        }    }}

4.4.4 循环的中断

  • break——立即终止循环
  • continue——立即终止当前的循环(继续执行下一次循环)
  • goto——可以跳出循环,到已标志好的位置
  • return——跳出循环及其包含的函数

4.4.5 无限循环


原创粉丝点击