C#---流程控制

一、if

顺序结构: 程序从Main函数进入,从上到下一行一行的执行,不会落下任何一行
分支结构:if if-else
选择结构: if else -if switch-case
循环结构:while do -while for foreach


1. if语句:

语法:
if (判断条件) {
要执行的代码;
}
判断条件:一般为关系表达式或者bool类型的值。
执行过程:程序运行到 if 处,首先判断if所带的小括号中的判断条件,

如果条件成立,也就是返回 true,则执行if 所带的大括号中的代码,
如果判断条件不成立,也就是返回一个 false。则跳过if结构,继续向下执行。                      

 if结构的特点: 先判断,再执行,有可能一行代码都不执行。用于一种情况的判断

2.if-else

语法:
if (判断条件){
执行的代码;}
else]{
执行的代码
}
执行过程 :程序执行到 if 处,首先判断 if 所带的小括号中的判断条件是否成立,如果成立,也就是返回一个true,则执行 if 所带的大括号中的代码,
执行完成后,跳出 if-else结构。
如果 if 所带的小括号中的判断条件不成立,也就是返回一个false,
则跳过 if 语句,执行 else 所带的大括号中的语句,执行完成后,跳出 if-else 结构。

if-else特点:先判断,再执行,最少都要执行一条代码。用于两种情况的判断

3.if else-if
作用: 用来处理多条件的区间性的判断。

语法:
if( 判断条件 ){
要执行的代码;
}
else if( 判断条件 ){
要执行的代码;
}
else if(判断条件){
要执行的代码;
}
.........

else{
要执行的代码;
}
执行过程: 程序首先判断第一个 if 所带的小括号中的判断条件,如果条件成立,也就是返回一个true,则执行该if 所带的大括号中的代码,执行完成后,立即跳出if else-if结构。
如果第一个if 所带的判断条件不成立,也就是返回一个false,则继续向下进行判断,依次的判断每一个if 的判断条件,如果成立,就执行该if所带的大括号中的代码,如果不成立,则继续向下判断,
如果每个if 所带的判断条件都不成立,就看当前这个if else-if结构中是否存在else.
如果有else的话,则执行else中所带的代码,如果没有else,则整个if-else if神马都不做。

else以省略。

//练习2∶提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是88888”
            //则提示正确,否则,如果用户名不是admin还提示用户用户名不存在,
            // 如里用户名是admin则提示密码错谋.

            Console.WriteLine("请输入用户名");
            String name = Console.ReadLine();
            Console.WriteLine("请输入密码");
            String password = Console.ReadLine();

            if (name == "admin" && password == "888888")
            {
                Console.WriteLine("登录成功");
            }else if (name == "admin")
            {
                Console.WriteLine("密码错误");
            }else if (password == "888888")
            {
                Console.WriteLine("用户名不存在");
            }
            else
            {
                Console.WriteLine("用户都密码错误");
            }
            Console.ReadKey();

二、异常

异常捕获
我们在程序中经常会出现各种各样的异常,你如果想要你的程序变得坚强一些。在你的代码中应该经常性的使用try-catch来进行异常捕获。
哪行代码有可能出现异常,你就踹它一脚。
语法:
try{
可能会出现异常的代码;}
catch{
出现异常后要执行的代码;}

执行过程: 如果try中的代码没有出现异常,那么catch中的代码不会执行。
如果try中的代码出现了异常,那怕这行出现异常的代码后面还有一百行都不会执行了,而是直接跳到catch中执行代码。

//语法上没有错误,在程序运行的过程当中,由于某些原因程序出现了错误,不能再正常的运行。
            bool flag= true;
            int number = 0;
            Console.WriteLine("请输入一个数字");
            try
            {
                number = Convert.ToInt32(Console.ReadLine());//赋值
            }

//try和catch之间不能有其他的代码

           catch
            {
                flag = false;
                Console.WriteLine("输入的内容有问题");
            }
            //我们如果要执行下面这行代码,需要满足某些条件。
            // 让代码满足某些条件去执行的话,使用bool类型
            if (flag)
            {
                Console.WriteLine(number * 2); 
            }
            Console.ReadKey();

三、switch-case
用来处理多条件的定值的判断。

语法:
switch (变量或者表达式的值)
case 值1 :要执行的代码;

break;
case 值2 : 要执行的代码;

break;
case 值3 : 要执行的代码;

break;
.... ....
default : 要执行的代码;

break;
执行过程: 程序执行到switch处,首先将括号中变量或者表达式的值计算出来,然后拿着这个值依次跟每个case后面所带的值进行匹配,一旦匹配成功,则执行该case所带的代码,执行完成后,遇到break。跳出switch-case结构。

如果,跟每个case所带的值都不匹配。就看当前这个switch-case结构中是否存在
default,如果有default,则执行default中的语句,如果没有default,则该switch-case结构什么都不做。

 //成绩>=90 : A
            //90>成绩>=80 :B
            //80>成绩>=70 : c
            //70>成绩>=60 : D
            //成绩 < 60: E
            Console.WriteLine("请输入一个分数:");
            int score = Convert.ToInt32(Console.ReadLine());
            switch(score/10){
                case 10:
                case 9:
                    Console.WriteLine("A");
                    break;
                case 8:
                    Console.WriteLine("B");
                    break;
                case 7:
                    Console.WriteLine("C");
                    break;
                case 6:
                    Console.WriteLine("D");
                    break;
                default :
                    Console.WriteLine("E");
                    break;
            }
            Console.ReadKey();

 请用户输年份,再输入月份,输出该月的天数.(结合之前如何判断闰年来做)
             Console.WriteLine("请输入一个年份");
            try
            {
                int year = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("请输入一个月份");
                try
                {
                    int month = Convert.ToInt32(Console.ReadLine());
                    if (month >= 1 && month <= 12)
                    {
                        int day = 0;
                        switch (month)
                        {
                            case 1:
                            case 3:
                            case 5:
                            case 7:
                            case 8:
                            case 10:
                            case 12:
                                day = 31;
                                break;
                            case 2:
                                //由于2月有平年和闰年的不同所以首先要判断—下当年是不是闰年
                                if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
                                {
                                    day = 29;
                                }
                                else
                                {
                                    day = 28;
                                }
                                break;
                            //4.6 9 11
                            default: day = 30; break;
                        }
                        Console.WriteLine("{0}年{1}月有{2}天", year, month, day);
                    }//if的判断
                    else
                    {
                        Console.WriteLine("输入月份错误");
                    }

                }//try月份的括号
                catch//try月份的匹配
                {
                    Console.WriteLine("输入月份错误");
                }
            }//try年份的括号
            catch//跟年份的try配对
            {
                Console.WriteLine("输入错误,程序退出");
            } 
            Console.ReadKey();

 四、循环

1.while循环:
while(循环条件){
循环体;

}
执行过程: 程序运行到while处,首先判断while所带的小括号内的循环条件是否成立,如果成立的话,也就是返回一个true,则执行循环体,执行完一遍循环体后,再次回到循环条件进行判断,如果依然成立,则继续执行循环体,如果不成立,则跳出while循环。在while循环当中,一般总会有那么一行代码,能够改变循环条件,使之终有一天不再成立,如果没有那么一行代码能够改变循环条件,也就是循环条件永远都成立,我们称之这种循环叫做死循环。

最简单的最常用的死循环:
while (true){
}

2.break
1)、可以跳出switch-case结构。2)、可以跳出当前循环。
break一般不单独的使用,而是跟着if判断一起使用,表示,当满足某些条件的时候,就不再循环了。

练习题

  输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩
            Console.WriteLine("请输入班级人数");
            try
            {
                int number = Convert.ToInt32(Console.ReadLine());
                double score = 0;//分数
                double sum = 0;//和
                bool flag = true;
                int i = 1;
                while (i <= number)
                {
                    Console.WriteLine("请输入第{0}同学的成绩",i);
                    try
                    {
                        score = Convert.ToDouble(Console.ReadLine());
                        sum += score;
                        i++;
                    }
                    catch
                    {
                        Console.WriteLine("成绩输入错误,退出程序");
                        flag = false;
                        break;
                      
                    }
                }
                if (flag)
                {
                 Console.WriteLine("班级总人数{0},总成绩为{1},平均成绩为{2:00}", number, sum, sum / number);
                }
            }//班级人树括号
            catch//班级人数匹配w
            {
                Console.WriteLine("人数输入错误,退出程序");
            }
                Console.ReadKey();

  //老师问学生,这道题你会做了吗?如果学生答"会了(y)"",
            //则可以放学.如果学生不会做(n) ,则老师再讲—遍,再问学生是否会做了......
            //直到学生会为止,才可以放学.
            //直到学生会或老师给他讲了10遍还不会,都要放学

            String str="";
            int i = 1;
            while( i<=10 && str != "y"){

                Console.WriteLine("这是我第{0}讲这道题,你会做了吗?y/n",i);
                str = Console.ReadLine();
                if (str == "y")
                {
                    Console.WriteLine("你可以放学了");
                    break;
                }
                    i++;
            }
            Console.ReadKey();

            //2006年培养学员80000人,每年增长25%,
            // 请问按此增长速度,到哪一年培训学员人数将达到20万人?
            int year = 2006;
            double number = 80000;
            while (number < 200000)
            {
                number += number * 0.25;
                year++;
            }
            Console.WriteLine("第{0}年增长到了200000",year);
            Console.ReadKey(); 

五.do-while

 语法:do{
循环体;
} while (循环条件) ;
执行过程: 程序首先会执行do中的循环体,执行完成后,去判断do-while循环的循环条件,如果成立,则继续执行do中的循环体,如果不成立,则跳出do-while循环。
特点:先循环,再判断,最少执行一遍循环体。

            //明天小兰就要登台演出了,老师说再把明天的演出的歌曲唱一遍,
            //如果满意,小兰就可以回家了.否则就需要再练习一遍,直到老师满意为止.(y / n)
            String answer;
            do
            {
                Console.WriteLine("老师,我的唱的还满意嘛?y/n");
                answer = Console.ReadLine();
            } while (answer=="n");
            Console.WriteLine("你可以放假回家了");
            Console.ReadKey();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值