黑马程序员——01 流控语句

来源:互联网 发布:淘宝全网数据分析工具 编辑:程序博客网 时间:2024/04/28 12:20
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

——If类型

语法:

If(条件)

{语句块1;语句块2;······}

用一对大括号来组成语句块

执行过程:

  1. 首先判断条件的结果
  2. 如果条件为true,则执行语句
  3. 如果条件为false,则跳过语句

注意:

  1.  if后括号中的条件,必须要能计算成一个boll
  2. 默认情况下,if语句只能带1句话,即和if语句有关系的语句只有语句1

练习:

 if的基本用法:

            int a = 3;            if (a > 10)            Console.WriteLine("成立");//if默认只带这一句话            Console.WriteLine("程序结束");//此句话和if没有关系            Console.ReadKey();

 2.小明的成绩>90,爸爸就奖励100元,反之则不奖励:

            Console.WriteLine("张三,请输入您的成绩");            int score =Convert.ToInt32(Console.ReadLine());            if (score > 90)            Console.WriteLine("恭喜您,爸爸将奖励你100块!");            Console.WriteLine("程序结束");            Console.ReadKey();

 3.让用户输入用户名和密码,用户名为admin,密码为mypass则显示登陆成功,否则提示失败

            Console.WriteLine("请输入您的用户名");            string name =Console.ReadLine();            Console.WriteLine("请输入您的密码");            string password =Console.ReadLine();            if (name =="admin" && password=="mypass")            {Console.WriteLine("登陆成功");}            if (name !="admin" || password !="mypass")            {Console.WriteLine("登陆失败");}            Console.WriteLine("程序结束");            Console.ReadKey();

——if-else类型

语法

If(条件)

{语句块1;}

else

{语句块2;}

执行过程:

首先判断条件

如果条件为true,则执行if带的语句块1,并且跳过else带的语句块2

如果条件为false,则提过if带的语句块1,执行else带的语句块2

练习:

1.      If-else的基本用法:

            Console.WriteLine("请输入您的语文成绩");            int chinseScore = Convert.ToInt32(Console.ReadLine());            if (chinseScore >= 90)            {                Console.WriteLine("恭喜,奖励您一百元");            }            else//初学者可翻译成否则            {                Console.WriteLine("残念,你得写一份学习总结");            }            Console.ReadKey();            Console.ReadKey();

 

2.要求用户输入两个数字a和b,如果a能被b整除或者a+b>100,则输出a,否则就输出b:

            Console.WriteLine("请输入一个数");            int a =Convert.ToInt32(Console.ReadLine());            Console.WriteLine("请再输入一个数");            int b =Convert.ToInt32(Console.ReadLine());            if (a % b == 0 || (a +b) > 100)            {               Console.WriteLine(a);            }            else            {               Console.WriteLine(b);            }            Console.ReadKey();

 

3.输入成绩>=90为A,80<=且<90为B,70<=且<80为C,60<=且<70为D,<=60为E

            Console.WriteLine("请输入您的成绩");            int score = Convert.ToInt32(Console.ReadLine());            if (score >= 90)            {                Console.WriteLine("A");            }            else            {//程序进入这里说明score肯定<90                if (score >= 80)//隐含score<90                    Console.WriteLine("B");                else                {//程序进入这里说明score肯定<80                    if (score >= 70)                        Console.WriteLine("C");                    else                    {                        if (score >= 60)                            Console.WriteLine("D");                        else                        {                            Console.WriteLine("E");                        }                    }                }            }

——if-else-if

语法:

If(条件1)

{语句块1;}

else if(条件2)

{语句块2;}

执行过程:

首先判断条件1

  1. 如果条件为true,则执行if带的语句块1,并跳过else if里的语句块2
  2. 如果为false,判断else if里的条件2,并且条件排除if中的条件1的情况
  3. 如果条件2true,则执行else if里的语句块2
  4. 如果为false,则跳过语句块2,说明条件都不满足,这个时候可以继续写else if来判断

练习:

1. if-else-if的基本用法

            Console.WriteLine("请输入您的成绩");             int score =Convert.ToInt32(Console.ReadLine());            if (score >= 90)            {                Console.WriteLine("您的评分为A");            }             elseif (score >= 80)            {                Console.WriteLine("您的评分为B");            }             elseif (score >= 70)            {                Console.WriteLine("您的评分为C");            }            elseif (score >= 60)            {                Console.WriteLine("您的评分为D");            }            else            {                Console.WriteLine("您的评分为E");            }            //跳出if-elseif            Console.ReadKey();

 2.提示用户输入密码,当密码为888888时提示正确,否则再提示用户输入一遍,若输入正确,则提示正确,否则提示错误

            Console.WriteLine("请输入您的密码");            int password =Convert.ToInt32(Console.ReadLine());            if (password ==888888)            { Console.WriteLine("密码正确"); }            else            { Console.WriteLine("您的密码有误,请再输入一遍");              int password2 =Convert.ToInt32(Console.ReadLine());              if (password2 ==888888)                  Console.WriteLine("密码正确");              else              {                  Console.WriteLine("密码有误");              }            }            Console.ReadKey();

 3.提示用户输入用户名,在提示输入密码,如果用户名为admin,密码为888888则提示正确,若用户名错误提示用户名不存在,用户名正确,密码错误提示密码错误     

            Console.WriteLine("请输入您的用户名");            string usrName =Console.ReadLine();            Console.WriteLine("请输入您的密码");            string passWord =Console.ReadLine();            if (usrName =="admin" && passWord=="888888")            { Console.WriteLine("正确"); }            elseif (usrName !="admin")            { Console.WriteLine("用户名不存在"); }            else            { Console.WriteLine("密码错误"); }            Console.ReadKey();

——switch case语句

语法:

Switch(表达式)

{

case 1:语句块1

break;

case 2:语句块2

break;

default:语句块3

break;

}

执行过程:

  1. 首先计算表达式
  2. 然后根据计算结果匹配case后面的值
  3. 如果有匹配项,则执行匹配项后面的语句,知道break语句跳出switch-case
  4.  如果所有的case值都不匹配,有default责执行default后面的语句,直到break结束
  5. 如果没有default,则跳出switch-case,什么都不执行

注意:

 每一个case标签后都必须加break;

练习:

1.输入评定等级,A来年工资涨500,B涨200,C不变,D降200,E降500:

            Console.WriteLine("请输入您的评定等级");            string level =Console.ReadLine();            decimal salary = 5000m;            bool flag =true;            switch (level)            {                case"A":                    salary += 500;                    break;                case"B":                    salary += 200;                    break;                case"C":                    salary = salary;                    break;                case"D":                    salary -= 200;                    break;                case"E":                    salary -= 500;                    break;                default://匹配时和位置没有关系,只和值有关系                    Console.WriteLine("您的输入有误");                    flag = false;                    break;            }            if (flag ==true)            { Console.WriteLine("您的工资为{0}", salary); }            Console.ReadKey();

2.提示用户分别输入年份,月份,然后告诉用户该月有多少天:

            Console.WriteLine("请输入一个年份");            int year =Convert.ToInt32(Console.ReadLine());            Console.WriteLine("请输入一个月份");            int month =Convert.ToInt32(Console.ReadLine());            switch (month)            {                case 1:                case 3:                case 5:                case 7:                case 8:                case 10:                case 12:                    Console.WriteLine("31天");                    break;                case 2:                    if (year % 400 == 0 ||year % 4 == 0 && year % 100 != 0)                    {                       Console.WriteLine("29天");                    }                    else                    {                       Console.WriteLine("28天");                    }                    break;                default:                    Console.WriteLine("30天");                    break;            }            Console.ReadKey();

3.让用户输入一个成绩,>=90输出A,90>且>=80输出B,80>切>=70输出C,70>且>=60输出D

            Console.WriteLine("请输入您的成绩");            int score =Convert.ToInt32(Console.ReadLine());            switch (score / 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("输入错误");                    break;            }            Console.ReadKey();

——while类型:

语法:

While(条件) //条件叫:循环条件

{

要循环执行的N条程序;//循环体;

}

执行过程:

先判断循环条件,如果条件为true,则转向2;如果条件为false则转向3

执行循环体,循环体执行完后转向1

跳出循环,循环结束。

特点:先判断再执行

注意:在循环体中,一定要有那么一句话,改变循环条件中的某个变量的值,使循环条件终有那么一天为false

练习:

1.打印一百次:欢迎来到传智博客

             int a = 0;             while (a < 100)            {                Console.WriteLine("欢迎来到传智博客学习");                a++;            }            Console.ReadKey();

2. 输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩

            Console.WriteLine("请输入班级人数");            int number =Convert.ToInt32(Console.ReadLine());//得到班级人数            int score = 0;//用于存储用户输入的分数            int a = 1;            int sum = 0;//用于存储总成绩            while (a <= number)            {                Console.WriteLine("请输入第{0}个学生的成绩", a);                score = Convert.ToInt32(Console.ReadLine());                sum = sum + score;//sum+=score                a++;            }            Console.WriteLine("本班有{0}人,总成绩为{1},平均成绩为{2}", number, sum, sum /number);            Console.ReadKey();

3. 老师问“这道题会做了吗”如果学生回答会了(y),则放学,若不会,则再讲一遍,在问学生是否会做了

  a)  直到会了才可以放学:

            Console.WriteLine("这道题会做了吗?");//第一问            string choice =Console.ReadLine();            while (choice =="n")            {                Console.WriteLine("那老师再给你讲一遍吧");                Console.WriteLine("这道题会做了吗?(y/n)");                choice = Console.ReadLine();            }               Console.WriteLine("好了可以放学了");               Console.ReadKey();

 

b)  直到老师讲了十遍不管会不会都要放学:

            Console.WriteLine("这道题会做了吗?(y/n)");            string choice2 =Console.ReadLine();            int number = 0;            while (choice2 =="n" && number< 10)            {                Console.WriteLine("那老师再讲一遍吧");                number++;                Console.WriteLine("这道题你会做了吗?(y/n)");                choice2 = Console.ReadLine();            }            Console.WriteLine("可以放学了");            Console.ReadKey();

——do while

语法:

do

{循环体}

while(循环条件);

  1. 执行循环体,执行完循环体转向2
  2.  判断条件是否成立,如果条件为true,则转向1,如果条件为false,则条向3
  3. 跳出循环,执行结束

注意:

假如循环条件一开始就不成立,对于while循环,一次都不执行,对于do-while循环体会执行一次。

所以,do-while的循环体一般至少会被执行一次。

While先判断,后执行

do-while先执行,后判断

练习:

 1.从1+到100的和

            int sum = 0;            int i = 1;            while (i <= 100)            {                sum = sum + i;                i++;            }            Console.WriteLine("从1加到100的总和为{0}", sum);            Console.ReadKey();

2.  要求用户输入用户名和密码,只要用户名不是admin,密码不是888888的都提示用户名或密码输入错误,请重新输入

            string name;            string passWord;            do            {                Console.WriteLine("请输入用户名");                name = Console.ReadLine();                Console.WriteLine("请输入密码");                passWord = Console.ReadLine();                if (name !="admin" || passWord !="888888")                {                    Console.WriteLine("用户名或密码输入错误,请重新输入");                }            } while (name != "admin" || passWord !="888888");            Console.WriteLine("验证通过");            Console.ReadKey();

3. 不断要求用户输入一个数字,并打印它的两倍,直到输入q结束程序:

            int number;            bool flag =true;            do            {                try                {                    Console.WriteLine("请输入一个数字");                    number = Convert.ToInt32(Console.ReadLine());                    Console.WriteLine("{0}的两倍数位{1}", number, number * 2);                }                catch                { flag = false; }            } while (flag);            Console.WriteLine("程序结束");            Console.ReadKey();

——for循环

语法:

For(表达式1;表达式2;表达式3

{

循环体

}

For循环一般用于已知循环次数的循环

一般情况下:

表达式1用于定义循环变量和对循环变量赋初值

表达式2为循环条件

表达式3用于改变循环变量的值

执行过程:

  1. 计算表达式2(循环条件),如果表达式2的值为true.则转向第3
  2. 如果表达式2的值为false,转向第5
  3. 执行表达式2,转向第2
  4. 循环结束。 

水仙花数:

  1. 是一个三位数,设三位数为cba
  2. 如果满足a^3+b^3+c^3=cba
  3.  则这个数为水仙花数

嵌套循环:

            for (int i = 0; i < 10;i++)            {                                   //属于外层循环                for (int j = 0; j < 10;j++)                {                    Console.WriteLine("我爱你"); //属于内层循环                }                                                //属于外层循环             }             Console.ReadKey(); //该语句循环了40次


先执行外层循环再执行内层循环

练习:

1.99乘法表     

            for (int i = 1; i <= 9;i++)            {                for (int j = 1; j <= 9;j++)                {                              //第i行的第j个式子                    Console.Write("{0}X{1}={2:00}  ", i, j, i * j);//在占位符里加“:00”会自动变成两位数                }                Console.WriteLine(); //每循环完一次就空一行            }            Console.ReadKey();

2. 梯形99乘法表

            for (int i = 1; i <= 9;i++)            {                for (int j = 1; j <= i;j++)                {                    Console.Write("{0}X{1}={2}  ", i, j, i * j);                 }                Console.WriteLine();            }            Console.ReadKey();

3.根据用户输入的值输出加法表 :

            int j=0;            bool flag=false;            while(flag==false)            try            {                Console.WriteLine("请输入一个数字");                j = Convert.ToInt32(Console.ReadLine());                for (int i = 0; i <= j;i++)                {                    Console.WriteLine("{0}+{1}={2}", i, j - i, j);                    flag = true;                }                             }            catch            {              Console.WriteLine("您输入的不是数字,请重新输入");              flag = false;            }             Console.ReadKey();


 

 

 

原创粉丝点击