----------------------以下为我在黑马程序员学习期间整理的笔记和心得,期待与您交流! ----------------------

21、while

2013-09-07 00:59:49
while循环的语法:
while(条件)                 //条件叫:循环条件
{
要循环执行的N条程序;        //循环体
}
执行过程:
1.先判断循环条件,如果条件为ture,则转向2,如果条件为false,则转向3
2.执行循环体,循环体执行完后,转向1
3.跳出循环,循环结束
            int i = 0;
            while (i < 5)
            {
                Console.WriteLine("下次考试一定要细心!");
                i++;
            }
            Console.ReadKey();


22、复习-作业讲解

2013-09-07 01:31:20
1.打印100次"欢迎来到传播智客学习."
       int i = 0;
            while (i < 100)
            {
                Console.WriteLine("欢迎来到传播智客学习!");
                i++;
            }
            Console.ReadKey();
2.输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩
            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; //sum+=score;
                i++;
            }
            Console.WriteLine("本班共有{0}人,总成绩为{1}分,平均成绩为{2}分",count,sum,sum/count);
            Console.ReadKey();
3.老师问学生,这道题你会做了吗?如果学生答"会了(y)",则可以放学,如果学生不会做(n),则老师再讲一遍,再问学生是否会做了......
-知道学生会了为止,才可以放学.
-直到学生会或老师给他讲了10遍还不会,都要放学
            Console.WriteLine("这道题你会做了吗?(y/n)");
            string answer=Console.ReadLine();
            int i = 0;
            int b = 0;
            while(answer != "y" &&
                answer != "n"&&b<1)
            {
                Console.WriteLine("输入错误!请重新输入!这道题你会做了吗?(y/n)");
                answer = Console.ReadLine();
                b++;
            }
            while(answer=="n" && i<10) 
            {
                Console.WriteLine("老师讲一遍题!");
                i++;
                Console.WriteLine("这道题你会做了吗?(y/n)");
                answer = Console.ReadLine();
            }
            Console.WriteLine("你可以放学了!");
            Console.ReadKey();

4.2006年培养了学院8万人,每年增长25%,请问按此增长速度,到哪一年培训学员的人数将达到20万人?

            int year = 2006;
            double stu = 80000;
            while(stu<=200000)
            {
                stu = stu * 1.25;   //计算人数增加25%的值
                year++;
            }
            Console.WriteLine("到{0}年后人数达到20万",year);
            Console.ReadKey();
23、do-while
2013-09-07 17:17:47
do while
语法:
do
{循环体}
while(条件);
执行过程:
1.执行循环体,执行完循环体转向2
2.判断条件是否成立,如果条件为ture,则转向1.如果条件为false,则转向3
3.跳出循环,循环结束

假如循环提交一开始就不成立,对于while循环,一次都不会执行,对于to-while循环体一般至少会执行一次
while:先判断,后执行
do-while:先执行,后判断
            string answer;
            do
            {
                Console.WriteLine("小兰表演一遍舞蹈!");
                Console.WriteLine("老师你满意吗?(y/n)");
                answer = Console.ReadLine();
            }
            while (answer == "n");
            Console.WriteLine("跳得不错了,回家好好休息!");
            Console.ReadKey();

检测异常
try
{
  }

catch
{
  }
如果try中的代码没有出异常,则不会执行catch中的代码
如果try中的代码出现异常,则程序立即跳到catch中
            Console.WriteLine("请输入张三的分数?");
            try
            {
                int seore = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("in try");
            }
            catch
            {
                Console.WriteLine("in catch");
            }
            Console.ReadKey();
            string answer;
            do
            {
                Console.WriteLine("小兰表演一遍舞蹈!");
                Console.WriteLine("老师你满意吗?(y/n)");
                answer = Console.ReadLine();
                while (answer != "y" || answer != "n")
                {
                    Console.WriteLine("输入错误");
                }
            }
            while (answer == "n");
            Console.WriteLine("跳得不错了,回家好好休息!");
            Console.ReadKey();
24、p61练习
2013-09-08 00:29:38
1.计算1到100之间的整数的和;
            int sum = 0;
            int i = 1;
            while (i <= 100)
            {
                sum = sum + i;
                i++;
            }
2.要求用户输入用户名和密码,只要不是admin/888888,就一直提示用户名或密码错误,请重新输入
            string userNmae;
            string password;
            bool flag=false;
            do
            {
                Console.WriteLine("请输入用户名?");
                userNmae = Console.ReadLine();
                Console.WriteLine("请输入密码");
                password = Console.ReadLine();
                if (userNmae != "admin" || password != "88888")
                {
                    Console.WriteLine("用户名或密码错误,请重新输入!");
                    flag = true;
                }
            } while (flag);
            Console.WriteLine("登陆成功!");
3.不断要求用户输入学生姓名,输入q结束
            string input;
            do
            {
                Console.WriteLine("请输入用户姓名?");
                input = Console.ReadLine();
            } while (input != "q");
            Console.WriteLine("程序结束.");
4.不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序结束
            int input;
            bool flag = false;
            {
                try
                {
                    Console.WriteLine("请输入一个数字");
                    input = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("{0}的两倍是{1}", input, input * 2);
                    flag = true;              
                }
                catch
                {
                    flag = false;
                }
            }while(flag)
            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();
            }
5.不断要求用户输入一个数字(假定用户输入的都是正整数),当用户输入end的时候显示刚才输入的数字中的最大值
            int max = 0;
            string input="";
            int number;
            do
            {
                try
                {
                    Console.WriteLine("请输入一个数?");
                    input = Console.ReadLine();
                    number=Convert.ToInt32(input);
                    if(number>max)
                    {
                        max = number;
                    }
                }
                catch
                {
                    if (input!="end")
                    {
                        Console.WriteLine("输入了非法数据!");
                        input = "end";
                    }
                }
            }while(input!="end");
            Console.WriteLine("你输入的最大值是"+max);
            Console.ReadKey();
25、调试 
2013-09-08 16:52:05
设置断点
单步运行
观察变量


26、for
2013-09-08 17:13:23
For循环
语法:
for(表达式1;表达式2;表达式3;)
{
    循环体
}
执行过程:
第1步 计算表达式1,转向第2步
第2步 计算表达式2(循环条件),如果表达式2的值为ture转向第3步.如果表达式2的值为false,转向第步
第3步 执行循环体,转向第4步
第4步 执行表达式3,转向第2步
第5步 循环结束
            int i = 0;   //相当于表达式1
            while (i < 100) //循环条件,相当于表达式2
            {
                Console.WriteLine("下次我一定细心!");
                i++;//相当于表达式3
            }
一般情况下,表达式1用于定义循环变量和对循环变量赋初值
表达式2:循环条件
表达式3:用于改变循环变量的值
            for (int i = 0; i < 100; i++)
            {
                Console.WriteLine("下次我一定要细心!"+i);
            }
1.求1-100间的所有偶数和?
            int sum = 0;
            for (int i = 1; i <= 100; i++)
            {
                if (i % 2 == 0)
                {
                    sum = sum + i;
                }
            }
            Console.WriteLine("1-100的所有偶数" + sum);
            Console.ReadKey();
2.找出100-999间的水仙花数?
            for (int i = 100; i <= 999; i++)
            {
                int ge = i % 10;
                int shi = i / 10 % 10;
                int bai = i / 100;
                if (i == ge * ge * ge + shi * shi * shi + bai * bai * bai)
                {
                    Console.WriteLine(i);
                }
            }
*死循环
            for (; ; )
            {
                Console.WriteLine("死循环!"); 
            }
27、复习习题讲解
2013-09-09 14:06:26
1.输出九九乘法表(长方形)
            for(int i = 1;i<=9;i++)
            {
                for (int a = 1; a <=9; a++)
                {
                    Console.Write("{0}X{1}={2:00}  ",i,a,i*a);
                }
                Console.WriteLine();
            }
2.输出九九乘法表(三角形)
            for(int i = 1;i<=9;i++)
            {
                for (int a = 1; a <=i; a++)
                {
                    Console.Write("{0}X{1}={2:00}  ",i,a,i*a);
                }
                Console.WriteLine();
            }
3.根据6可以输出一下加法表:
0+6=6
1+5=6
2+4=6
3+3=6
4+2=6
5+1=6
6+0=6
            Console.WriteLine("请输入一个值!");
            bool flag = false;
            int a = 0;
            while (flag == false)
            {
                try
                {
                    a = Convert.ToInt32(Console.ReadLine());
                    flag = true;
                }
                catch
                {
                    Console.WriteLine("你刚刚输入的不是数字");
                    flag = false;
                }
            }
            for (int b = 0; b <= a; b++)
            {
                Console.WriteLine("{0}+{1}={2}", b, a - b, a);
            }
            Console.ReadKey();
*判断输入的是否为数字
            Console.WriteLine("请输入一个值");
            bool flag = false;
            int a = 0;
            while (flag == false)
            {
                try
                {
                    a = Convert.ToInt32(Console.ReadLine());
                    flag = true;
                }
                catch
                {
                    Console.WriteLine("你输入的有误,请重新输入");
                    flag = false;
                }
            }
            Console.WriteLine("你刚才输入的值是:{0}", a);
            Console.ReadKey(); 

28、breakcontinue

2013-09-09 19:49:31
//练习1.循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立刻停止输入并报错
            int age = 0;
            int sum = 0;
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("请输入第{0}个人的年龄", i + 1);
                try
                {
                    age = Convert.ToInt32(Console.ReadLine());
                    if (age < 0 || age >= 100)
                    {
                        Console.WriteLine("年龄不合法!");
                        break;
                    }
                    sum = sum + age;
                }
                catch
                {
                    Console.WriteLine("你输入的不是数字,程序终止!");
                    break;
                }
            }
            Console.WriteLine("这五个人的平均年龄是{0}", sum / 5);
            Console.ReadKey();
//练习2:在while中用break实现要求用户一直输入用户名和密码,只要不是admin/888888就一直提示要求重新输入,如果正确则提登陆成功.
            string userName, passWord;
            while (true)
            {
                Console.WriteLine("请输入用户名");
                userName = Console.ReadLine();
                Console.WriteLine("请输入密码");
                passWord = Console.ReadLine();
                if (userName == "admin" && passWord == "888888")
                {
                    break;
                }
                Console.WriteLine("你输入的用户名或密码错误,请重新输入!");
            }
            Console.WriteLine("登陆成功");
            Console.ReadKey();
//练习3:1-100之间的整数相加,得到累加值大于20的当前数
            int sum=0;
            int i = 0;
            for (i = 1; i <= 100; i++)
            {
                sum += i;
                if (sum>=20)
                {
                    break;
                }
            }
            Console.WriteLine(i);
            Console.ReadKey();
break:
1.可以用于switch-case判断中,用于跳出switch
2.用在循环中,用于立即跳出(终止)循环
注意:用于循环中,跳出的是break所在的循环

continue
用于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不再执行循环体中的continue下面的语句),直接进行下一次循环.(do-while/while直接进行下一次循环条件的判断.如果条件成立.则再次进入循环.对于for循环,先执行表达式三,再判断循环条件是否成立!)
//练习一:用while continue实现计算1到100之间的除了能被7整除之外所有整数的和.
            int i = 0;
            int sum = 0;
            while (i <= 100)
            {
                i++;
                if (i % 7 == 0) 
                {
                    sum = i + sum;
                }
            }
            Console.WriteLine("和为{0}",sum);
            Console.ReadKey();
            int i = 0;
            int sum = 0;
            while (i<100)
            {
                
                if (i % 7 == 0)
                {
                    i++;
                    continue;
                }
                sum = i + sum;
                i++;
            }
            Console.WriteLine("和为{0}", sum);
            Console.ReadKey();
三元表达式
表1?表2:表3
执行过程:首先计算表达式1,表达式1应该是一个能够计算成bool类型的值,如果表达式1的值为true,则表达式2的值作为整个表达式的值,如果表1的值为false,则表达式3的值做为整个表达式的值.
表达式2和表达式3的类型一定要相同(相兼)
            int a = 10;
            int b = 20;
            if (a > b)
            {
                Console.WriteLine(a);
            }
            else 
            {
                Console.WriteLine(b);
            }
            int max = a > b ? a : b;
            Console.WriteLine(max);
            Console.WriteLine(a > b ? a : b);
            Console.ReadKey();
顺序结构:语句顺序执行
分支结构:语句在满足条件下执行
if,if-else,switch-case,表1?表2:表3
循环结构:语句在满足条件下循环执行多次
while,do-while,for
跳转语句
brak,continue,goto
goto语法
goto 标签
标签:
            goto myLabel;
            Console.WriteLine("a");
            Console.WriteLine("b");
            myLabel:
            Console.WriteLine("c");
            Console.ReadKey();
29、常量枚举
2013-09-10 15:43:41
常量:
语法:
const 类型 常量名 = 常量值
在定义时赋值,在其他地方不允许赋值
            const double PI = 3.14;
            Console.ReadKey();
枚举:
让我们定义一种枚举类型并且在定义这种类型时,我们要制定这个类型的所有值
语法:
enum 自己起的;类型名称{值1,值2,值3....值n};
枚举的定义,一般和类定义在同一个级别,这样,在同一个命名空间下的类就都可以使用这个枚举了
    enum Gender 
    {
    男,
    女
    }
枚举的作用:
1.限制用户不能随意复赋值,只能在定义枚举时列举的值中选择
2.不需要死记每个值是什么,只需要选择相应的值
注意:定义枚举时,值不能是int类型
枚举类型的变量都可以强制转换成一个int类型
枚举的值在定义时是有一个默认编号的,编号从0开始.
            Gender sex;
            sex = Gender.男;
            Console.WriteLine((int)sex);
            Console.ReadKey();
如果把一个字符串转换成枚举类型:
(自枚)(Enum.Parse(typeof(自枚),"带转换的字符")


30、结构

2013-09-10 22:26:28
为什么要用结构:
1.比如我们上课讲的为了存储一个人的信息,要声明一组变量,当我们要存储N个人的信息时,就要申明n组变量,麻烦
2.存储一个人信息的这几个变量间没有关系,容易记乱语法:
访问修饰符 struct 结构名
{
    定义结构成员
}
    enum Gender
    {
        男,
        女,
    }
    public struct person    //定义了一个叫Person的结构
    {
        public string name; //结构的成员
        public Gender sex;  //结构的成员
        public int age;     //结构的成员
    }
    class Program
    {
        static void Main(string[] args)
        {
            person onePerson;
            onePerson.name = "zhangsan";
            onePerson.age = 20;
            onePerson.sex = Gender.男;
            Console.WriteLine("我叫{0},我今年{1},我是{2}性",onePerson.name,onePerson.age,onePerson.sex);
            person secPerson;
            secPerson.name = "lisi";
            secPerson.age = 26;
            secPerson.sex = Gender.男;
            Console.WriteLine("我叫{0},我今年{1},我是{2}性",secPerson.name,secPerson.age,secPerson.sex);
            Console.ReadKey();