黑马程序员-net基础3

来源:互联网 发布:淘宝网商城手机套 编辑:程序博客网 时间:2024/05/24 01:41

----------------------   Windows Phone 7手机开发.Net培训    期待与您交流! ----------------------



顺序结构:

语句顺序执行

默认情况下都是顺序执行

分支结构

1、if结构

if结构的基本语法:

if(条件:关系表达式或逻辑表达式)

语句1:

 

执行过程:首先判断条件的结果,如果条件为true则执行语句如果为false,则执行后面的语句

注意:条件必须是bool类型

if语句只能带一句话,即和if语句有关的语句只有语句1

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

 

要求,在写程序时,哪怕if语句只带一句话,也要把它写在大括号中

2、if  else

if (条件)

{语句1

}

else

{语句2

}

3、if -else if

      int age=15;

      char sex='f';

if (age < 10)

         if(sex == 'f')

            Console.WriteLine("小女人");

         else

            Console.WriteLine("你长大了");

什么都没有!else永远与之最近的是一对

所以要养成写{}的好习惯

4、练习:提示用户输入用户名,然后在提示输入密码,如果用户名是“admin”并且密码是“888888”则提示输入成功,否则,如果用户名不是admin提示用户名不存在,如果用户名是admin密码不正确则提示密码错误。

Console.WriteLine("请输入用户名");

            string userName =Console.ReadLine();

            Console.WriteLine("请输入密码");

            string password =Console.ReadLine();

            if (userName =="admin" && password == "888888")

            {

               Console.WriteLine("登陆成功");

            }

            else if (userName !="admin")

            {

               Console.WriteLine("您输入的用户名不存在");

            }

            else

            {

                Console.WriteLine("密码错误!");

       Console.ReadLine();

5、练习:提示用户输入年龄,如果大于等于18岁,则告知用户可以观看,如果大于10岁小于18岁则提示用户是否继续观看(yes no),如果输入yes则可以看,如果输入的是no则提示你放弃了观看,如果用户小于10岁则不允许观看,

Console.WriteLine("请输入你的年龄,此片涉及暴力");

            int age = Convert.ToInt32(Console.ReadLine());

            if (age >= 18)

            {

               Console.WriteLine("你可以看");

            }

            else if (age > 10)

            {

               Console.WriteLine("你确定要看吗?");

                string input = Console.ReadLine();

                if (input ="yes")

                {

                   Console.WriteLine("请观看");

                }

                else

                {

                    Console.WriteLine ("你放弃了观看");

                }

            }

           //年龄小于10岁

            else

                {

                   Console.WriteLine ("你年龄太小不能观看");

                }

Console.WriteLine();

6、switch case语句               

Switch(表达式)

{

case值1:语句块1;

break;

case 值2:语句块2;

break;

default:语句块3;

break;

}

首先计算表达式的值,与case后面的值相匹配,如果有则执行匹配后面的语句,如果没有匹配值则执行default,如果没有default则跳出switch case什么都不执行

7、if else if 和switch case的比较

相同点:都可以实现多分支结构

不同点:switch 只能用于等值比较

if else if:可以处理范围

 

8、赋值表达式完成赋值之后 等号左边的变量的值就是整个表达式的值

 

9、例:

李四的年终工作评定,如果定为A级,则工资涨500元,如果定为B级,则工资涨200元,如果定为C级,工资不变,如果定为D级工资降200元,如果定为E级工资将500元。

设李四的原工资为5000元,请用户输入李四的评级,然后输出李四来年的工资水平。

Console.WriteLine("请输入用户的评级(A-E?)");

            string input =Console.ReadLine();

            decimal salary = 5000;

            bool flag = false;

            switch (input)

            {

                case "A":

                    salary += 500;

                    break;

                case "B":

                    salary += 200;

                    break;

                case "C":

                    break;

                case "D":

                    salary -= 200;

                    break;

                case "E":

                    salary -= 500;

                    break;

                default:

                   Console.WriteLine("您输入的字母有问题,请重新输入");

                    flag = true;

                    break;

            }

            Console.WriteLine("李四的工资是{0}",salary);

            Console.ReadLine();

 

10、练习switch case

请输入年份输入月份,输出该月有多少天

            Console.WriteLine("请输入年份");

            int year =Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("请输入月份");

            int month =Convert.ToInt32(Console.ReadLine());

            switch (month / 10)

            {

                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.ReadLine ();

引申:直接输入日期判断是星期几?

直接输入日期判断是这一年的第几天?

     直接输入某年的第几天,判断是几月几号?


循环结构

11、

while 循环的语法:

while (循环条件)

{

循环执行的程序;//循环体

}                

while(sum<250000)

{

要执行的循环体;

}

 

执行过程:

1、判断循环条件,如果条件为true则执行2,如果为false则执行3

2、执行循环体,循环体执行完之后转向1

3、跳出循环,循环结束

 

特点:先判断,后执行

 

注意:再循环体中,一定要有一句话,改变循环条件中的某个变量的值,使循环条件终有为false的可能,否则为死循环

            inti = 0;

            while (i < 10)

            {

               console.writeline("下次要小心");

                i++;

            }

            Console.Readline();

12、例

输入班级人数,然后依次输入每个学生的成绩,计算全班成绩的平均成绩和总成绩。

 

Console.WriteLine("请输入你们班有多少人?");

            int count =Convert.ToInt32(Console.ReadLine());

            int score = 0;

            int i = 0;

            int sum = 0;

            while (i < count)

            {

               Console.WriteLine("请输入第{0}个同学的学习成绩", i + 1);

                score =Convert.ToInt32(Console.ReadLine());

                sum = sum + score;

                i++;

            }

            Console.WriteLine("本班有{0}个学生,总成绩为{1},平均成绩为{2}", count, sum, sum /count);

            Console.ReadLine();

引申:注意:记得sum=0;赋初值

 

13、

do while语法

do

{循环体;

} while();

注意:while后面有“;”                                    

执行过程:

1、先执行循环体,循环体执行完之后转向2

2、判断循环条件,如果条件为true则执行1,如果为false则执行3

3、跳出循环,循环结束

特点:先执行,后判断

因此:while中条件不符合则一次也不执行

  do while中条件不符合却至少已经执行过一次

14、引出:在输入后判断是否输入的是(y/n)如果输入不是提示字母错误。

例:     string answer = "y";

            do

            {

                Console.WriteLine("小兰表演一遍舞蹈");

               Console.WriteLine("老师,你满意了吗?");

                answer =Console.ReadLine();

                while (answer !="y" && answer != "n")

                {

                   Console.WriteLine("只能输入y和n,请重新输入!");

                    answer = Console.ReadLine();

                }

            }

            while (answer =="n" );

            Console.WriteLine("跳的不错了,你可以回家了");

            Console.ReadLine();

循环判断do-while有时候也可以和try-catch进行转换

15、检测异常

try

{

将有可能出错的语句放到这里;

Console.WriteLine(“输入成功”);//提示没有错误

}

catch

{

}

例:

Console.WriteLine("请输入张三的分数");

            try

            {

                int score =Convert.ToInt32(Console.ReadLine());

            }

            catch

            {

               Console.WriteLine("你输入的不是数字");

            }

            Console .WriteLine("over");

            Console.ReadLine();

16、例:

要求:用户输入的用户名和密码是admin和888888,如果输入的不正确将一直提示输入用户名和密码错误请从新输入。

string userName;

            string password;

            bool flag = false;

            do

            {

flag = false;//注意如果不重置将会在下面赋true之后一直为true,将会是死循环

               Console.WriteLine("请输入用户名");

                userName =Console.ReadLine();

               Console.WriteLine("请输入密码");

                password =Console.ReadLine();

                if (userName !="admin" || password != "888888") ;

                {

                   Console.WriteLine("你输入的用户名和密码错误,请从新输入");

                    flag = true;//整个程序中只有此一处赋值语句

                }

            } while (flag);//如果在循环时不重置将会一直为true

            Console.WriteLine("登陆成功");

 

17、a、从键盘输入数字,输出这个数字的二倍,如果输入的不是数字则结束程序

              int input;

            bool flag = true;

            do

            {

                try

                {

                   Console.WriteLine("请输入一个数字");

                    input =Convert.ToInt32(Console.ReadLine());

                   Console.WriteLine("{0}的二倍是{1}", input, input * 2);

                    flag = true;

                }

                catch

                {

                   Console.WriteLine("你输入的格式有误,结束输入");//引申:如果想提示重新输入则另想循环!

                    flag = false;

                }

            } while (flag);

            Console.ReadLine();

b、从键盘输入一个数字显示这个数的二倍,如果遇到输入q则结束输入。

 

string input;

            int number;

            Console.WriteLine("请输入一个数(q结束)");

            input =Console.ReadLine();

            while (input !="q")

            {

                number =Convert.ToInt32(input);

               Console.WriteLine("{0}的二倍是{1}", number, number  * 2);

               Console.WriteLine("请输入一个数(q结束)");

                input =Console.ReadLine();

            }

            Console.ReadKey();

c、从键盘输入数字,直到输入end是结束程序并显示所有输入的数字中的最大值

 

            int max = 0;

            string input ="";

            int number = 0;

            do

            {

                try

                {

                   Console.WriteLine("请输入一个数");

                    input =Console.ReadLine();

                    number =Convert.ToInt32(input);

                    if (number >max)

                    {

                        max = number;

                    }

                }

                catch

                {

                    if (input !="end") ;

                    {

                       Console.WriteLine("你输入的是非法数据,请重新输入!");

                    }

                }

            } while (input !="end");

            Console.ReadLine();

 

18、程序的调试

最快的时间将错误找到!

出错分为两大类:a语法错误 编译器的错误

b逻辑错误 运行时的错误

设置断点

单步运行

观察变量

快速监视 变量或者表达式的值

根据语法是否符合

19、for循环

for 循环用于已知循环次数

while可以判断未知

语法:

for (表达式1;表达式2;表达式3)

{循环体;

}

表达式1:定义和初始化循环变量,表达式2:循环条件,表达式3:用于改变循环变量的值

执行过程:

1、计算表达式1,转向第2步

2、计算表达式2(循环条件)。如果表达式2为true,转向第3步,如果表达式2的值为false

转向第5步

3、执行循环体,转向第4步

4、执行表达式3,转向第2步

5、循环结束

while do-while for  三种循环可以相互转换  

20、循环的嵌套

练习    冒泡排序法   

for (int i = 0; i < num.Length - 1;i++)

            {

                for (int j = 0; j < num.Length - 1 -i; j++)

                {

                    if (num[j] >num[j + 1])

                    {

                       int temp = num[j];

                       num[j] = num[j + 1];

                       num[j+ 1] = temp;

                    }

                }

            }

21、乘法口诀

static void Main(string[]args)

        {

            int i, j;

            for (i = 1; i <= 9;i++)

            {

                for (j = 1; j <=i; j++)

                {

                   Console.Write("{0}*{1}={2}\t",j, i, i * j);//i在前还是j在前输入的格式不一样,j在前时与平时常见的是一致的。

                }

                Console.WriteLine();

            }

            Console.ReadLine();

       

23、输出菱形

找关系:每一行i与空格数和*个数之间的关系

        static void Main(string[] args)

        {

            int i, j, k;

            for (i = 0; i <= 3;i++)

            {

                for (j = 0; j <=2 - i; j++)

                   Console.Write(" ");

                for (k = 0; k <=2 * i; k++)

                    Console.Write("*");

                Console.WriteLine();

            }

            for (i = 0; i <= 2;i++)

            {

                for (j = 0; j <=i; j++)

                   Console.Write(" ");

                for (k = 0; k <=4 - 2 * i; k++)

                    Console.Write("*");

                Console.WriteLine();

            }

            Console.ReadLine();

跳转语句

21、break和continue区别

break :退出当前循环体

可以用于switch-case判断中,用于跳出switch

用在循环中,用于立即跳出(终止)循环

注意:用于循环中时跳出的是break所在的循环

continue:结束本次循环,进入下一次循环

立即结束本次循环判断循环条件,如果成立则进入下一次循环否则退出循环

while continue 循环条件的判断

goto最好不用,可以用标签break标签break嵌套来代替

 

---------------------   Windows Phone 7手机开发.Net培训    期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima