[C#]基本程序结构Ⅰ主程序与语句

主程序

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
            Console.ReadKey();
        }
    }
}

判断

①if

using System;

namespace ConsoleApp
{
    class TestClass
    {
        static void Main(string[] args)
        {
            // Display the number of command line arguments.
            Console.WriteLine(args.Length);
            DisplayWeatherReport(15.0);  // Output: Cold.
            DisplayWeatherReport(24.0);  // Output: Perfect!
            DisplayMeasurement(45);  // Output: The measurement value is 45
            DisplayMeasurement(-3);  // Output: Warning: not acceptable value! The measurement value is -3
            DisplayCharacter('f');  // Output: A lowercase letter: f
            DisplayCharacter('R');  // Output: An uppercase letter: R
            DisplayCharacter('8');  // Output: A digit: 8
            DisplayCharacter(',');  // Output: Not alphanumeric character: ,
            Console.ReadKey();
        }
        //包含 else 部分的 if 语句根据布尔表达式的值选择两个语句中的一个来执行
        static void DisplayWeatherReport(double tempInCelsius)
        {
            if (tempInCelsius < 20.0)
            {
                Console.WriteLine("Cold.");
            }
            else
            {
                Console.WriteLine("Perfect!");
            }
        }
        //不包含 else 部分的 if 语句仅在布尔表达式计算结果为 true 时执行其主体
        static void DisplayMeasurement(double value)
        {
            if (value < 0 || value > 100)
            {
                Console.Write("Warning: not acceptable value! ");
            }

            Console.WriteLine($"The measurement value is {value}");
        }
        //可嵌套 if 语句来检查多个条件
        static void DisplayCharacter(char ch)
        {
            if (char.IsUpper(ch))
            {
                Console.WriteLine($"An uppercase letter: {ch}");
            }
            else if (char.IsLower(ch))
            {
                Console.WriteLine($"A lowercase letter: {ch}");
            }
            else if (char.IsDigit(ch))
            {
                Console.WriteLine($"A digit: {ch}");
            }
            else
            {
                Console.WriteLine($"Not alphanumeric character: {ch}");
            }
        }
    }
}

②switch

using System;

namespace ConsoleApp
{
    class TestClass
    {
        static void Main(string[] args)
        {
            // Display the number of command line arguments.
            Console.WriteLine(args.Length);
            DisplayMeasurement(-4);  // Output: Measured value is -4; too low.
            DisplayMeasurement(5);  // Output: Measured value is 5.
            DisplayMeasurement(30);  // Output: Measured value is 30; too high.
            DisplayMeasurement(double.NaN);  // Output: Failed measurement.
            DisplayMeasurements(3, 4);  // Output: First measurement is 3, second measurement is 4.
            DisplayMeasurements(5, 5);  // Output: Both measurements are valid and equal to 5.
            Console.ReadKey();
        }
        //switch 语句根据与匹配表达式匹配的模式来选择要执行的语句列表
        static void DisplayMeasurement(double measurement)
        {
            switch (measurement)
            {
                case < 0.0:
                    Console.WriteLine($"Measured value is {measurement}; too low.");
                    break;

                case > 15.0:
                    Console.WriteLine($"Measured value is {measurement}; too high.");
                    break;

                case double.NaN:
                    Console.WriteLine("Failed measurement.");
                    break;

                default:
                    Console.WriteLine($"Measured value is {measurement}.");
                    break;
            }
        }
        //Case guard附加条件
        static void DisplayMeasurements(int a, int b)
        {
            switch ((a, b))
            {
                case ( > 0, > 0) when a == b:
                    Console.WriteLine($"Both measurements are valid and equal to {a}.");
                    break;

                case ( > 0, > 0):
                    Console.WriteLine($"First measurement is {a}, second measurement is {b}.");
                    break;

                default:
                    Console.WriteLine("One or both measurements are not valid.");
                    break;
            }
        }
    }
}

循环

①for

using System;

namespace ConsoleApp3
{
    class TestClass
    {
        static void Main(string[] args)
        {
            //在指定的布尔表达式的计算结果为 true 时,for 语句会执行一条语句或一个语句块
            for (int i = 0; i < 3; i++)
            {
                Console.Write(i);
            }
            //for 语句的所有部分都是可选的
            for (; ; )
            {
                //...
            }
            Console.ReadKey();
        }
    }
}

②foreach

using System;
using System.Collections.Generic;

namespace ConsoleApp3
{
    class TestClass
    {
        static void Main(string[] args)
        {
            //foreach 语句为类型实例中实现 System.Collections.IEnumerable 或 System.Collections.Generic.IEnumerable<T> 接口的每个元素执行语句或语句块
            var fibNumbers = new List<int> { 0, 1, 1, 2, 3, 5, 8, 13 };
            foreach (int element in fibNumbers)
            {
                Console.Write($"{element} ");
            }
        }
    }
}

③do

using System;

namespace ConsoleApp3
{
    class TestClass
    {
        static void Main(string[] args)
        {
            //在指定的布尔表达式的计算结果为 true 时,do 语句会执行一条语句或一个语句块。 由于在每次执行循环之后都会计算此表达式,所以 do 循环会执行一次或多次。
            //这不同于 while 循环(该循环执行零次或多次)。
            int n = 0;
            do
            {
                Console.Write(n);
                n++;
            } while (n < 5);
        }
    }
}

④while

using System;

namespace ConsoleApp3
{
    class TestClass
    {
        static void Main(string[] args)
        {
            //在指定的布尔表达式的计算结果为 true 时,while 语句会执行一条语句或一个语句块。 由于在每次执行循环之前都会计算此表达式,所以 while 循环会执行零次或多次。
            //这不同于 do 循环,该循环执行一次或多次。
            int n = 0;
            while (n < 5)
            {
                Console.Write(n);
                n++;
            }
        }
    }
}

中断

①break

using System;

namespace ConsoleApp3
{
    class TestClass
    {
        static void Main(string[] args)
        {
            //终止最接近的循环或switch,将控制权转交给已终止语句后面的语句(若有)
            //在嵌套循环中,break 语句仅终止包含它的最内部循环
            //在循环内使用 switch 语句时,switch 节末尾的 break 语句仅从 switch 语句中转移控制权,包含 switch 语句的循环不受影响
            int[] numbers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            foreach (int number in numbers)
            {
                if (number == 3)
                {
                    break;
                }

                Console.Write($"{number} ");
            }
            Console.WriteLine();
            Console.WriteLine("End of the example.");

            for (int outer = 0; outer < 5; outer++)
            {
                for (int inner = 0; inner < 5; inner++)
                {
                    if (inner > outer)
                    {
                        break;
                    }

                    Console.Write($"{inner} ");
                }
                Console.WriteLine();
            }

            double[] measurements = { -4, 5, 30, double.NaN };
            foreach (double measurement in measurements)
            {
                switch (measurement)
                {
                    case < 0.0:
                        Console.WriteLine($"Measured value is {measurement}; too low.");
                        break;

                    case > 15.0:
                        Console.WriteLine($"Measured value is {measurement}; too high.");
                        break;

                    case double.NaN:
                        Console.WriteLine("Failed measurement.");
                        break;

                    default:
                        Console.WriteLine($"Measured value is {measurement}.");
                        break;
                }
            }
            Console.ReadKey();
        }
    }
}

②contiune

using System;

namespace ConsoleApp3
{
    class TestClass
    {
        static void Main(string[] args)
        {
            //continue 语句启动最接近的封闭迭代语句(即 for、foreach、while 或 do 循环)的新迭代
            for (int i = 0; i < 5; i++)
            {
                Console.Write($"Iteration {i}: ");

                if (i < 3)
                {
                    Console.WriteLine("skip");
                    continue;
                }

                Console.WriteLine("done");
            }
        }
    }
}

③return

using System;

namespace ConsoleApp3
{
    class TestClass
    {
        static void Main(string[] args)
        {
            //return 语句终止它所在的函数的执行,并将控制权和函数结果(若有)返回给调用方
            //如果函数成员不计算值,可使用不带表达式的 return 语句
            //通常使用不带表达式的 return 语句提前终止函数成员,如果函数成员不包含 return 语句,则在执行其最后一个语句后终止
            //如果函数成员计算值,可使用带表达式的 return 语句
            Console.WriteLine("First call:");
            DisplayIfNecessary(6);

            Console.WriteLine("Second call:");
            DisplayIfNecessary(5);

            void DisplayIfNecessary(int number)
            {
                if (number % 2 == 0)
                {
                    return;
                }
                Console.WriteLine(number);
                
            }
            double surfaceArea = CalculateCylinderSurfaceArea(1, 1);
            Console.WriteLine($"{surfaceArea:F2}"); // output: 12.57

            double CalculateCylinderSurfaceArea(double baseRadius, double height)
            {
                double baseArea = Math.PI * baseRadius * baseRadius;
                double sideArea = 2 * Math.PI * baseRadius * height;
                return 2 * baseArea + sideArea;
            }
            Console.ReadKey();
        }
    }
}

④goto

using System;

class Program
{
    static void Main(string[] args)
    {
        int count = 1;
    login:
        Console.WriteLine("请输入用户名");
        string username = Console.ReadLine();
        Console.WriteLine("请输入密码");
        string userpwd = Console.ReadLine();
        if (username == "aaa" && userpwd == "123")
        {
            Console.WriteLine("登录成功");
        }
        else
        {
            count++;
            if (count > 3)
            {
                Console.WriteLine("用户名或密码错误次数过多!退出!");
            }
            else
            {
                Console.WriteLine("用户名或密码错误");
                goto login;//返回login标签处重新输入用户名密码
            }
        }
    }
}

 

posted @ 2022-10-24 10:12  SairenjiHaruna  阅读(268)  评论(0编辑  收藏  举报