C#基础入门第五天(流程控制)

一、程序调试
1)、写完一段程序后,想看一下这段程序的执行过程。
2)、当你写完这段程序后,发现,程序并没有按照你想象的样子去执行。

调试方法:
1)、F11逐语句调试(单步调试)
2)、F10逐过程调试(方法时候开始用)
3)、断点调试
程序运行到断点处,就不在往下执行

二、for循环
语法:
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1一般为声明循环变量,记录循环的次数(int i=0;)
表达式2一般为循环条件(i<10)
表达式3一般为改变循环条件的代码,使循环条件终有一天不再成立(i++)。
执行过程:程序首先执行表达式1,声明了一个循环变量用来记录循环的次数,
然后执行表达式2,判断循环条件是否成立,如果表达式2返回的结果为true,
则执行循环体。当执行完循环体后,执行表达式3,然后执行表达式2继续判断循环条件是否成立,
如果成立则继续执行循环体,如果不成立,则跳出for循环。

for小练习
//求1-100之间的所有整数和,偶数和,奇数和
int sum = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 2 != 0)
{
sum += i;
}
}
Console.WriteLine(sum);
Console.ReadKey();

                    /找出100-999间的水仙花数
        //水仙花数指的是 这个百位数字
        //百位的立方+十位的立方+个位的立方==当前这个百位数字
        //百位:153/100   十位:153%100/10   个位:153%10
        int bai = 0;
        int shi = 0;
        int ge = 0;

        for (int i = 100; i < 1000; i++)
        {
            bai = i / 100;
            shi = i % 100 / 10;
            ge = i % 10;

            if ((bai * bai * bai) + (shi * shi * shi) + (ge * ge * ge) == i)
            {
                Console.WriteLine(i);
            }
        }
        Console.ReadKey();

                    //乘法口诀表(特别注意console.writeline起到的是j循环换行的作用,j<=i是因为j循环几次,式子就打印几次)
                    for (int i = 1; i <=9; i++)
        {
            for (int j = 1; j <= i; j++)
            {
                Console.Write("{0}*{1}={2}\t", i, j, i * j);
            }
            Console.WriteLine();//换行用的
        }
        Console.ReadKey();

                    //让用户输入一个数,给出加法式子
        Console.WriteLine("请输入一个数");
        int number = Convert.ToInt32(Console.ReadLine());
        for (int i = 0; i <= number; i++)
        {
            Console.WriteLine("{0}+{1}={2}", i,number-i, number);
        }
        Console.ReadKey();

三、int.TryParse
int.parse、double.parse.............(出错抛异常)
尝试着将一个字符串转换成int类型。
conver调用的就是parse,所以效果是一样的
//使用convert进行转换,成就成了,不成抛异常
//int numberOne = Convert.ToInt32("123abc");
//parse也是一样,区别在于convert调用的是Parse,parse效率更高
//int numberTwo = int.Parse("123abc");

        //Tryparse失败,不抛异常,性能更高,不成功将变量赋值为0
        int number = 1;
                       //方法      参数     返回值
        bool b = int.TryParse("123abc", out number);
        Console.WriteLine(b);
        Console.WriteLine(number);
        //称为方法或者函数,这个方法就是将字符串转换为int类型
        Console.ReadKey();

                    /*
         循坏录入5个人的年龄并计算平均年龄,如果了录入的数据出现负数或大于
         100的数,立即停止输入并报错。(这题还有反序的做法,很简单)
         */
        int sum = 0;
        bool c = true;
        for (int i = 1; i <= 5; i++)
        {
            try
            {
                Console.WriteLine("请输入第{0}个人的年龄", i);
                int age = Convert.ToInt32(Console.ReadLine());
                if (age >= 0 && age <= 100)
                {
                    sum += age;
                }
                else
                {
                    Console.WriteLine("输入的年龄范围不对,退出程序!");
                    c = false;
                    break;
                }
            }
            catch
            {
                Console.WriteLine("输入的内容不能转换成年龄,退出程序!");
                c = false;
                break;
            }
             }
        if (c)
        {
            Console.WriteLine("5个人的平均年龄是:{0}", sum / 5);
        }
        Console.ReadKey();

        /*
         在while中用break实现要求用户一直输入用户名和密码,只要不是admin/888888
         就一直提示要求重新输入,如果正确则提示登录成功
         */
        string userName = "";
        string userPwd = "";
        while (true)
        {
            Console.WriteLine("请输入用户名");
            userName = Console.ReadLine();
            Console.WriteLine("请输入密码");
            userPwd = Console.ReadLine();
            if (userName == "admin" && userPwd == "888888")
            {
                Console.WriteLine("登录成功");
                break;
            }
        }
        Console.ReadKey();

        /*
         1-100之间的整数相加,得到累加值大于20的当前述(比如:1+2+3+4+5+6=21)结果6 (这题开始没读懂提议,所以每累加一次都将sum归零一次,这样就求得1-100所有20的累加数,如果按照题意,只需要打印6则将sum=0替换为break;)
         */
        int sum = 0;
        for (int i = 1; i <= 100; i++)
        {
            sum += i;
            if (sum >= 20)
            {
                console.writeline(i);
                sum = 0;
            }
        }
        console.readkey();

四、continue关键字和质数
continue:立即结束本次循环,判断循环条件如果成立,则进入下一次循环,否则退出循环

       //计算1-100之间的数,除了能被7整除的数的和
        int sum = 0;
        int i = 0;
        while (i <= 100)
        {
            if (i % 7 == 0)
            {
                i++;
                continue;
            }
            else
            {
                sum += i;
                i++;
            }
        }
        Console.WriteLine(sum);
        Console.ReadKey();

        //找出100以内的所有素数(这题是初级算法题,bool放第一个for循环里面,因为每次都要将bool值重置回来,不然就一直都是false)
        //素数就是质数:只能被1和这个数字本身整除的数字,1不算!
        for (int i = 2; i <= 100; i++)
        {
            bool b = true;
            for (int j = 2; j < i; j++)
            {
                //除尽说明不是质数,没必要在继续下去
                if (i % j == 0)
                {
                    b = false;
                    break;
                }
            }
            if (b)
            {
                Console.WriteLine("质数有{0}", i);
            }
        }
        Console.ReadKey();

四、三元表达式
语法:
表达式1?表达式2:表达式3;
表达式1一般为一个关系表达式。
如果表达式1的值为true,那么表达式2的值就是整个三元表达式的值。
如果表达式1的值为false,那么表达式3的值就是整个三元表达式的值。
注意:表达式2的结果类型必须跟表达式3的结果类型一致,并且也要跟整个三元表达式的结果类型一致。

  //让用户输入两个数字比两个数字的大小
        try
        {
            Console.WriteLine("输入第一个数字");
            int numberOne = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("输入第二个数字");
            int numberTwo = Convert.ToInt32(Console.ReadLine());
            int max = numberOne > numberTwo ? numberOne : numberTwo;
            Console.WriteLine(max);
        }
        catch
        {
            Console.WriteLine("输入的数字不能正确被转换,退出程序!");
        }
        Console.ReadKey();

        //让用户输入姓名,只要不是老赵,就都返回杂种
        Console.WriteLine("请输入姓名");
        string name = Console.ReadLine();
        string result = name == "老赵" ? "淫才啊" : "杂种啊";
        Console.WriteLine(result);
        Console.ReadKey();

五、随机数
//产生随机数
//1。创建能够产生随机数的对象
Random r = new Random();
//2.让产生随机数的这个对象调用方法来产生随机数
int rNumber = r.Next(1, 10);
Console.WriteLine(rNumber);
Console.ReadKey();

                    //输入名字随机显示这个人上辈子是什么人
        //1.创建能够产生随机数的对象
        //2.产生随机数
        Console.WriteLine("输入你的姓名");
        string name = Console.ReadLine();
        Random r = new Random();
        int n = r.Next(1, 7);
        switch (n)
        {
            case 1:Console.WriteLine("茅十八");
                break;
            case 2:Console.WriteLine("小桂子");
                break;
            case 3:Console.WriteLine("鳌拜啊");
                break;
            case 4:Console.WriteLine("神龙教主");
                break;
            case 5:Console.WriteLine("吴应熊");
                break;
            case 6:Console.WriteLine("陈近南");
                break;
        }
        Console.ReadKey();

C#基础入门第五天(流程控制)

上一篇:win10下编译opencv4.5.1的过程记录


下一篇:C#中的依赖注入和IoC容器