第二周学习内容

Convert类型转换

类型如果想兼容的两个变量,可以使用自动类型转换或者强制类型转换,但是,如果两个类型的变量不兼容,比如string与int或者string与double,这个时候我们可以使用一个叫做convert的转换工厂进行转换。
注意:使用convert进行类型转换,也需要满足一个条件:面儿上必须要过得去。

namespace _2类型转换
{
    class Program
    {
        static void Main(string[] args)
        {
            //显示类型转换、自动类型转换
            //int-double   double-int
            //string s = "123";
            //将字符串转换成int或者double类型
            //double d = Convert.ToDouble(s);
            //int n = Convert.ToInt32(s);
            //Console.WriteLine(d);
            //Console.WriteLine(n);
            //Console.ReadKey();

            //让用户输入姓名 语文 数学 英语三门课的成绩,
            //然后给用户显示:××,你的总成绩为××分,平均成绩为××分。
            Console.WriteLine("请输入你的姓名");
            string name = Console.ReadLine();
            Console.WriteLine("请输入你的语文成绩");
            string strChinese = Console.ReadLine();
            Console.WriteLine("请输入你的数学成绩");
            string strMath = Console.ReadLine();
            Console.WriteLine("请输入你的英语成绩");
            string strEnglish = Console.ReadLine();
            55 77 88  557788 
            由于字符串去相加的话,最终会变成相连接,如果拿字符串类型的变量参与计算
            需要将字符串装换成int或者double类型
            //int chinese = Convert.ToInt32(strChinese);
            //int math = Convert.ToInt32(strMath);
            //int english = Convert.ToInt32(strEnglish);
            //Console.WriteLine("{0}你的总成绩是{1},平均成绩是{2}", name, chinese + math + english, (chinese + math + english) / 3);
            //Console.ReadKey();
            double chinese = Convert.ToDouble(strChinese);
            double math = Convert.ToDouble(strMath);
            double english = Convert.ToDouble(strEnglish);
            double sumScore = chinese + math + english;
            double avg = sumScore / 3;//double avg = (int)sumScore*1.0/3
            Console.WriteLine("{0}你的总成绩是{1},平均成绩是{2:0.00}", name, sumScore, avg);
            Console.ReadKey();
        }
    }
}
namespace _3Convert类型z转换
{
   class Program
    {
        static void Main(string[] args)
        {
            //提示用户输入一个数字 接受 并且向控制台打印用户输入的这个数字的二倍
            Console.WriteLine("请输入一个数字");
            //string strNumber = Console.ReadLine();
            //将用户输入的字符串转换成int或double类型
            double number = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine(number * 2);
            Console.ReadKey();
        }
    }
}

算数运算符

++:分为前++和后++,不管是前++还是后++,最终结果都是给这个变量加一。
区别表现在表达式当中,如果是前++,则先给这个变量自身加1,然后带着这个加一后的值去参与运算。如果是后++,则先拿原值参与运算,运算完成后,再将这个变量自身加一。
–:减减同上
对于像++或—这样只需要一个操作就能完成的运算,我们称之为一元运算符。

      • / % 对于这些需要两个或以上才能完成运算的操作符,我们称之为二元运算符。
        一元运算符的优先级要高于二元运算符。
        如果在一个表达式当中,既有一元运算符又有二元运算符,我们首先计算一元运算符。
        Int number = 10;
        Int result = 10+ ++numer;
namespace _4加加减减
{
    class Program
    {
        static void Main(string[] args)
        {
            //int number = 10;
            number++;
            ++number;
            number--;
            //--number;
            //Console.WriteLine(number);
            //Console.ReadKey();

            //int number = 10;
            int result = 10 + number++;-->int result = 10 +number;number++;
            //int result = 10 + ++number;//-->number++;int result = number;
            //Console.WriteLine(number);
            //Console.WriteLine(result);
            //Console.ReadKey();

            //int number = 10;
            int result = 10 + number--;
            int result = 10 + number;
            number--;

            int result = 10+ --number;
            //number--;
            //int result = 10 + number;
            //Console.WriteLine(number);
            //Console.WriteLine(result);
            //Console.ReadKey();

            int a = 5;
            int b = a++ + ++a * 2 + --a + a++;
            //      5+7*2+6+6    7
            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.ReadKey();
        }
    }
}

关系运算符

<

=
<=
==
!=
关系运算符是用来描述两个事物之间的关系。
由关系运算符连接的表达式称之为关系表达。
5、 bool类型
在c#中我们用布尔类型来描述对或者错
Bool类型的值只有两个一个true一个false

namespace _5关系运算符
{
    class Program
    {
        static void Main(string[] args)
        {
            //大象重量1500>老鼠重量1
            //关系表达式的结果是bool类型
            //bool b = 1500 > 1;
            //bool b = 3 > 1000;
            //bool b = 39 < 18;
            bool b = 20 == 20;
            Console.WriteLine(b);
            Console.ReadKey();
        }
    }
}

逻辑运算符

&& 逻辑与
||逻辑或
!逻辑非
由逻辑运算符连接的表达式叫做逻辑表达式
逻辑运算符的两边放的一般都是关系表达式或者bool类型的值
5>3 && true
3>5||false
! 表达式
逻辑表达式的结果同样也是bool类型

namespace _6逻辑运算符练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //让用户输入老苏的语文和数学成绩,输出一下判断是否正确,正确输出true,错误输出false
            //1)老苏的语文和数学成绩都大于90分
            Console.WriteLine("小苏,请输入你的语文成绩");
            string sreChinese = Console.ReadLine();
            int chinese = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("小苏,请输入你的数学成绩");
            int math = Convert.ToInt32(Console.ReadLine());


            //bool b = chinese > 90 && math > 9;
            bool b = chinese > 90 || math > 90;
            Console.WriteLine(b);
            Console.ReadKey();
            //2)语文和数学有一门是大于90分的
        }
    }
}
namespace _7判断闰年
{
    class Program
    {
        static void Main(string[] args)
        {
            //闰年的判定:1、年份能被400整除2、年份能被四百整除但不能被100整除
            //让用户输入一个年份,如果是闰年,则输出true,不是则输出false
            Console.WriteLine("请输入要判断的年份");
            int year = Convert.ToInt32(Console.ReadLine());

            //逻辑与的优先级高于逻辑或
            bool b = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
            Console.WriteLine(b);
            Console.ReadKey();

            //    bool b = 5 < 3 && 5 > 3;
            //    bool b = 5 > 3 || 4 < 3;
            //}
        }
    }
}

复合赋值运算符

Int number =10;
+= :
Number+=20;
Number= number+20;
-=
Number-=5;
Number= number-5;
*=
/=
%=

在这里插入图片描述

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

If语句

(一种情况):
语法:
If(判断条件)
{
要执行的代码;
}
判断条件:一般为关系表达式或者bool类型的值。
执行过程:程序运行的if处,首先判断if所带的小括号中的判断条件,
如果条件成立,也就是返回true,则执行if所带的大括号中的代码,
如果判断条件不成立,也就是返回一个fasle。则跳过if结构,继续向下进行。

If结构的特点:先判断,再执行,有可能一行代码都不执行

namespace _9if结构
{
    class Program
    {
        static void Main(string[] args)
        {
            //如果你跪键盘的时间大于60分钟,那么媳妇奖励你晚饭不用做了
            Console.WriteLine("请输入你跪键盘的时间");
            int mins = Convert.ToInt32(Console.ReadLine());


            //如果跪键盘的时间大于60分钟。则不做晚饭

            bool b = mins > 60;
            //如果你想表示的含义是当b的值为true的时候去执行if中的代码,
            //那么 语法上  ==true可以省略
            //但是,如果你想表示的是当b==false的时候去执行if中的代码,
            //语法上==false不能省略
            if (b) 
            {
                Console.WriteLine("好老公,不用跪键盘了,去吔屎吧");

            }
            Console.ReadKey();
        }
    }
}
namespace _10if结构的三个练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //让用户输入年龄,如果输入的年龄大于(含)23岁,则给用户显示你到了结婚的年龄了

            //Console.WriteLine("请输入你的年龄");
            //int age = Convert.ToInt32(Console.ReadLine());
            //bool b = age >= 23;
            //if (b)
            //{
            //    Console.WriteLine("你可以结婚啦");
            //}
            //Console.ReadKey();
            
            //语文成绩大于90并且音乐成绩大于80
            //语文成绩等于100并且音乐成绩大于70,则奖励100元
            //Console.WriteLine("请输入老苏的语文成绩");
            //int chinese = Convert.ToInt32(Console.ReadLine());
            //Console.WriteLine("请输入老苏的音乐成绩");
            //int music =Convert.ToInt32(Console.ReadLine());

            //bool b = (chinese>90&&music>80)||(chinese==100&&music>70);
            //if(b)
            //{
            //    Console.WriteLine("奖励100元");
            //}
            //Console.ReadKey();
            
            //提示用户输入用户名和密码,如果用户名为zio,密码为2018,则提示登录成功。

            //Console.WriteLine("请输入用户名");
            //string name = Console.ReadLine();
            //Console.WriteLine("请输入密码");
            //string pwd = Console.ReadLine();

            //if (name == "zio" && pwd == "2018")
            //{
            //    Console.WriteLine("登陆成功");
            //}
            //Console.ReadKey();
        }
    }
}

If-else

(两种情况)

语法:
If(判断条件)
{
执行的代码;
}
Else
{
}
执行过程:程序执行到if处,首先判断所带的小括号中的判断条件是否成立,
如果成立,也就是返回一个true,则执行if所带的大括号中的代码
执行完成后跳出if-else结构。
如果if所带的小括号中的判断条件不成立,即返回一个false
则跳过if语句,执行else所带的大括号中的语句
执行完成后跳出if-else结构。
If-else特点:先判断,再执行,最少都要执行一条代码。
用于两种情况的判断
注意:else永远跟离它最近的那个if配对

namespace _11if_else练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //如果小赵的考试成绩大于(含)90,那么爸爸奖励他100元,
            //否则的话,爸爸就让小赵跪方便面
            //Console.WriteLine("请输入小赵的考试成绩");
            //int score = Convert.ToInt32(Console.ReadLine());
            //if (score > 90)
            //{
            //    Console.WriteLine("奖励你100块");
            //}
            //else
            //{
            //    Console.WriteLine("去跪方便面");
            //}
            //Console.ReadKey();

            //成绩测评
            //成绩>=90:A
            //90>成绩>=80:B
            //80>成绩>=70:C
            //70>成绩>=60:D
            //成绩<60:E
#region if的做法
            //Console.WriteLine("请输入学员的考试成绩");
            //int score = Convert.ToInt32(Console.ReadLine());
            //if (score >= 90)
            //{
            //    Console.WriteLine("A");
            //}
            //if (score >= 80 && score < 90)
            //{
            //    Console.WriteLine("B");
            //}
            //if (score >= 70 && score < 80)
            //{
            //    Console.WriteLine("C");
            //}
            //if (score>=60&&score<70)
            //{
            //    Console.WriteLine("D");
            //}
            //if (score  <60)
            //{
            //    Console.WriteLine("E");
            //}
#endregion
#region if-else
            //Console.WriteLine("请输入考试成绩");
            //int score = Convert.ToInt32(Console.ReadLine());
            //if (score>=90)
            //{
            //    Console.WriteLine("A");
            //} 
            //else//<90
            //{
            //    if (score>=80)
            //    {
            //        Console.WriteLine("B");
            //    } 
            //    else
            //    {
            //        if (score>=70)
            //        {
            //            Console.WriteLine("C");
            //        } 
            //        else
            //        {
            //            if (score>=60)
            //            {
            //                Console.WriteLine("D");
            //            } 
            //            else//<60
            //            {
            //                Console.WriteLine("E");
            //            }
            //        }
            //    }
            //}
#endregion
#region 最正确的做法
            Console.WriteLine("请输入成绩");
            int score = Convert.ToInt32(Console.ReadLine());
            if (score >= 90)
            {
                Console.WriteLine("A");
            }
            else if (score >= 80)
            {
                Console.WriteLine("B");
            }
            else if (score >= 70)
            {
                Console.WriteLine("C");
            }
            else if (score >= 60) 
            {
                Console.WriteLine("D");
            }
            else
            {
                Console.WriteLine("E");
            }
            Console.ReadKey();
#endregion
        }
    }
}

If else-if

作用:用来处理多条件的区间性的判断。
语法:
If(判断条件)
{
要执行的代码;
}
Else if(判断条件)
{
要执行的代码;
}
Else 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什么都不做,else可以省略。

namespace _12几个练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //1、比较三个数字的大小,不考虑相等


            //分别提示用户输入三个数字,我们接受并转换成int类型
            //Console.WriteLine("请输入第一个数字"); ;
            //int numberOne = Convert.ToInt32(Console.ReadLine());
            //Console.WriteLine("请输入第二个数字");
            //int numberTwo = Convert.ToInt32(Console.ReadLine());
            //Console.WriteLine("请输入第三个数字");
            //int numberThree = Convert.ToInt32(Console.ReadLine());


            //三种情况应用if else-if来做

            如果第一个数字大于第二个并且大于第三个
            //if (numberOne>numberTwo&&numberOne>numberThree)
            //{
            //    Console.WriteLine(numberOne);
            //}
            如果第二个大于第一个并且大于第三个
            //else if (numberTwo>numberOne&&numberTwo>numberThree)
            //{
            //    Console.WriteLine(numberTwo);
            //}
            如果第三个数字大于第一个并且大于第二个
            //else
            //{
            //    Console.WriteLine(numberThree);
            //}

            //先让第一个数字跟第二个数字比较 如果大于第二个数字 再让第一个数字跟第三个数字比较
            //if (numberOne > numberTwo)
            //{
            //    //如果第一个大于第二个,再让第一个跟第三个比较
            //    if (numberOne > numberThree)
            //    {
            //        Console.WriteLine(numberOne);
            //    }
            //    else//第三个大于第一个
            //    {
            //        Console.WriteLine(numberThree);
            //    }
            //}
            //else//第二个大于第一个
            //{
            //    //让第二个数字跟第三个数字进行比较 如果第二个数字大于第三个数字 第二个数字最大 否则第三个最大
            //    if (numberTwo>numberThree)
            //    {
            //        Console.WriteLine(numberTwo);
            //    } 
            //    else//第三个大于第二个
            //    {
            //        Console.WriteLine(numberThree);
            //    }
            //}
            //Console.ReadKey();

            //2、提示用户输入密码,如果密码是88888则提示正确,否则要求重输
            //如密码是88888则提示正确,否则提示错误,程序结束。
            //如果密码里有英文需要转换吗?
            //Console.WriteLine("请输入密码");
            //string pwd = Console.ReadLine();
            //if (pwd == "88888")
            //{
            //    Console.WriteLine("登陆成功");
            //}
            //else //要求用户再输入一次
            //{
            //    Console.WriteLine("密码错误,请重新输入");
            //    pwd = Console.ReadLine();
            //    if (pwd == "88888")
            //    {
            //        Console.WriteLine("终于正确");
            //    }
            //    else//第二次错误
            //    {
            //        Console.WriteLine("两遍都不对,告辞");
            //    }
            //}
            //Console.ReadKey();

            //3、提示用户输入用户名,然后再输入密码,如果用户名是“jojo”,并且密码是2018
            //则提示正确,否则,如果用户名不是jojo提示用户名不存在
            //如果是jojo则提示密码错误
            //Console.WriteLine("请输入用户名");
            //string name = Console.ReadLine();
            //Console.WriteLine("请输入密码");
            //string pwd = Console.ReadLine();

            第一种情况  用户名和密码都正确
            //if (name == "jojo" && pwd == "2018")
            //{
            //    Console.WriteLine("登陆成功");
            //}
            //    //第二种情况 密码错误
            //else if (name == "jojo")
            //{
            //    Console.WriteLine("密码输入错误,告辞");
            //}
            //else if (pwd == "2018")
            //{
            //    Console.WriteLine("用户名错误,告辞");
            //}
            //else
            //{
            //    Console.WriteLine("用户名和密码都错误");
            //}
            //Console.ReadKey();

            //4、提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于10岁,
            //则告知不允许查看,如果大于等于10岁并且小于18,
            //则提示用户是否要继续查看(yes、no)如果输入的是yes则提示用户查看
            //否则提示“退出,你放弃查看”。


            //第一种情况 大于等于十八岁
            //二  <10
            //三 >=10 && <18
            Console.WriteLine("请输入你的年龄");
            int age = Convert.ToInt32(Console.ReadLine());

            if (age >= 18)
            {
                Console.WriteLine("看吧");
            }
            else if (age < 10)
            {
                Console.WriteLine("滚回家学习");
            }
            else
            {
                Console.WriteLine("确定要看么?yes/no");
                //input 要么是yes要么是no
                string input = Console.ReadLine();
                if (input == "yes")
                {
                    Console.WriteLine("看吧,后果自负");
                }
                else
                {
                    Console.WriteLine("乖孩子");
                }
            }
            Console.ReadKey();
            

        }
    }
}

异常捕获

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

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

namespace _2异常捕获
{
    class Program
    {
        static void Main(string[] args)
        {
            //语法上没有错误,在程序运行过程中,由于某些原因出现了错误,不能再正常的运行
            Console.WriteLine("请输入一个数字");
            bool b = true;
            int number = 0;//声明了一个变量
            try
            {
                number = Convert.ToInt32(Console.ReadLine());//赋值
            }
            catch
            {
                Console.WriteLine("输入内容无法执行");
                b = false;
            }
            //我们如果要执行下面这行代码,需要满足某些条件
            //让代码满足某些条件去执行的话,使用bool类型
            if (b)
            {
                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结构中的语句,如果没有则该switch-case结构什么都不做。

If else-if与switch的比较:

相同点:都可以实现多分支结构
不同点:
If else-if可以处理范围
Switch-case一般只能用于等值比较

namespace _3switch_case
{
    class Program
    {
        static void Main(string[] args)
        {
            //李四的年终工作评定,如果为a级,则工资涨500元,如果为b,则工资涨200元
            //如果是c工资不变,如果是D级工资降200元,如果为E级工资降500元
            //李四的原工资为5000,请用户输入李四的评级,然后显示李四来年的工资
            bool b = true;
            double salary = 5000;
            Console.WriteLine("请输入对李四的年终评定");//a b c d e
            string level = (Console.ReadLine());

     //       switch(变量或者表达式的值)
     //{
     //       case 值1:要执行的代码;
     //       break;
     //       case 值2:要执行的代码;
     //       break;
     //       case 值3:要执行的代码;
     //       break;
     //       ……….
     //       Default:要执行的代码;
     //       break;
     // }
            switch (level)
            {
                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("输入有误程序退出");
                    b = false;
                    break;
            }
            if (b)
            {
                Console.WriteLine("李四明年的工资是{0}元", salary);
            }
#region  if else-if的做法

           // if (level == "A" ) 
           // {
           //     salary += 500;//salary=salary+500;
           // }
           // else if (level == "B")
           // {
           //     salary+=200;
           // }
           // else if(level =="C")
           // {

           // }
           // else if (level=="D")
           // {
           //     salary-=200;
           // }
           // else if (level=="E")
           // {
           //salary -= 500;
           // }
           // else//输入的不是abcde其中之一
           // {
           //     Console.WriteLine("输入有误告辞");
           //     b = false;
           // }
           // if (b == true)
           // {
           //     Console.WriteLine("李四来年的工资是");
           // }
#endregion
            Console.ReadKey();

            //0 0.5 1 1.5 2
        }
    }
}
namespace _4switch_case练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //让用户输入姓名,显示这个人上辈子是什么职业
            //Console.WriteLine("请输入一个姓名,我们将显示出这个人上辈子的职业");
            //string name = Console.ReadLine();
            老杨、老苏、老马、老蒋、老牛、老虎、老赵
            //switch (name)
            //{
            //    case "老杨": Console.WriteLine("上辈子是抽大烟的");
            //        break;
            //    case "老苏": Console.WriteLine("上辈子是军官");
            //        break;
            //    case "老马": Console.WriteLine("上辈子是人力车夫");
            //        break;
            //    case "老蒋": Console.WriteLine("上辈子是老师");
            //        break;
            //    default: Console.WriteLine("俺不知道");
            //        break;
            //}
            //Console.ReadKey();

            //成绩问题
            Console.WriteLine("请输入一个考试成绩");
            int score = Convert.ToInt32(Console.ReadLine());//0-100
            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();
        }
    }
}

namespace _5判断闰年
{
    class Program
    {
        static void Main(string[] args)
        {
            //请用户输入年份,再输入月份,输出该月的天数。(结合之前如何判断闰年来做)
            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:
                            //由于二月有平年和闰年的不同,所以首先判断当年是不是闰年
                            if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
                            {
                                day = 29;
                            }
                            else
                            {
                                day = 28;
                            } 
                            break;
                        default: day = 30;//4 6 9 11
                            break;
                    }
                    Console.WriteLine("{0}年{1}月有{1}天", year, month, day);
                    }//if判断的括号
                    else
                    {
                        Console.WriteLine("输入的月份不符合要求,程序退出");
                    }
                }//try月份的括号
                catch//跟月份的try配对
                {
                    Console.WriteLine("输入的月份有误,程序退出");
                }
            }//try年份的括号
            catch//跟年份的try配对
            {
                Console.WriteLine("输入的年份有误,程序退出");
            }
            Console.ReadKey();
        }
    }
}

循环结构

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

namespace _6循环结构
{
    class Program
    {
        static void Main(string[] args)
        {
            //    //向控制台打印100遍,下次考试我一定要细心
            //    //循环体:Console.WriteLine(“下次考试我一定要细心”);
            //    //循环条件:打印的次数小于一百遍

            //    //需要定义一个循环变量用来记录循环次数,每循环一次,循环变量都应该自身加1
            //    int i = 0;
            //    while (i<100)
            //    {
            //        Console.WriteLine("下次考试我一定要细心\t{0}",i);
            //        i++;//每循环一次,都要自身加1.否则就是死循环
            //    }
            //    Console.ReadKey();

            //求1-100之间所有整数的和
            //求1-100之间所有偶数的和
            //循环体:累加的过程
            //循环条件:i<=100
            int i = 1;
            int sum = 0;//声明一个变量用来存储总和
            while (i <= 100)
            {
                if (i % 2 == 0)
                {
                    sum += i;
                }
                i++;
            }
            Console.WriteLine(sum);
            Console.ReadKey();
        }
    }
}

While循环的特点

先判断再执行,有可能一遍循环都不执行

Break

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

namespace _7break关键字的用法
{
    class Program
    {
        static void Main(string[] args)
        {
            //int i = 1;
            //int j = 1;
            //while (i <= 10)
            //{
            //    while (j <= 10)
            //    {
            //        Console.WriteLine("我是里面的while循环");
            //        j++;
            //    }
            //    Console.WriteLine("我是外面的while循环");
            //    i++;
            //}
            //Console.ReadKey();
        //int i = 0;
        //while (i < 10)
        //{
        //  Console.WriteLine("HI");
        //break;
        //}
        //Console.ReadKey();

            //要求用户输入用户名和密码 用户名只要不是admin 密码不是888888就继续
            //循环体 提示用户输入用户名 我们接受密码 接受判断是否成功
            //循环条件 用户名或密码错误
            string userName = "";
            string userPwd = "";
            while (userName!="admin"||userPwd!="888888")
            {
                Console.WriteLine("请输入用户名");
                userName = Console.ReadLine();
                Console.WriteLine("请输入密码");
                userPwd = Console.ReadLine();
            }
            Console.WriteLine("登录成功");
            Console.ReadKey();
        }
    }
}
namespace _8while循环的三个练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //1、输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩
            //循环体:提示输入学员成绩,接受 并转换成整数类型,累加到总成绩中
            //循环条件:循环次数小于等于班级人数

            //Console.WriteLine("请输入班级人数");
            //int count = Convert.ToInt32(Console.ReadLine());
            //int sum = 0;//用来存放成绩
            //int i = 1;//声明一个循环变量用来记录循环次数
            //while (i<=count)
            //{
            //    Console.WriteLine("请输入第{0}个学员的考试成绩",i);
            //    int score = Convert.ToInt32(Console.ReadLine());
            //    //表示把每一个学员的成绩累加到总成绩当中
            //    sum += score;
            //    i++;
            //}
            //Console.WriteLine("{0}个人的班级总成绩是{1}平均成绩是{2}",count,sum,sum/count);
            //Console.ReadKey();

            //2、老师问学生,这道题会了吗 如果学生回答会了(yes),则可以放学
            //如果学生回答不会(no),则老师再讲一遍,再问学生是否会做了....直到学生会做为止
            //才可以放学;直到学生会或者老师给他讲了十遍还不会,都要放学

            //放学的两个条件:
            //1、会了
            //2、讲完第十遍,不管会不会我都放学

            //循环体:老师不停的提问 学生不停的回答 老师还要不停的讲
            //循环条件:学生不会 讲的次数小于十遍
            //string answer = "";
            //int i = 0;
            //while (answer!="yes"&&i<10)
            //{
            //    Console.WriteLine("这是我第{0}遍给你讲,你会了吗?yes/no",i+1);
            //    answer = Console.ReadLine();//yes no
            //    //如果学生回答的是 yes 此时应跳出循环
            //    if (answer=="yes")
            //    {
            //        Console.WriteLine("会了就放学!");
            //        break;
            //    }
            //    i++;

            //}
            //Console.WriteLine("滚!");

            //3、2006年培养学员八万人,每年增长百分之二十五
            //请问按此增长速度,到哪一年培训学员人数将达到20万人?

            //循环体:人数每年增长百分之二十五
            //循环条件:人数大于等于二十万
            //double people = 80000;
            //int year = 2006;
            //while (people<200000)
            //{
            //    people *= 1.25;
            //    year++;
            //}
            //Console.WriteLine("到第{0}年的时候人数将达到20万人",year);

            //提示用户输入yes或no
            //要求:只能输入yes或no 只要不是yes或no就要求用户一直重新输入

            //循环体:提示用户输入 我们接受并判断
            //循环条件:输入的不能是yes或no
            //string input = "";
            //while (input!="yes"&&input!="no")
            //{
            //    Console.WriteLine("Please input yes or no");
            //    input = Console.ReadLine();

            //}

            //提示用户输入用户名和密码,要求用户名等于admin密码等于88888
            //只要用户名错误或者密码错误就重新输入
            //但是最多只能输入三次

            //循环体:提示用户输入用户名和密码 接收 判断
            //循环条件:用户名或密码错误  最多错误三次
            //int i = 0;
            //string userName = "";
            //string userPwd = "";
            //while ((userName!="admin"||userPwd!="88888")&&i<3)
            //{
            //    Console.WriteLine("Please input userName");
            //    userName = Console.ReadLine();
            //    Console.WriteLine("Please input userPwd");
            //    userPwd = Console.ReadLine();
            //    i++;
            //}

            //写两个循环 
            //第一个循环提示用户A输入用户名,只要为空就要求A一直重新输入
            //循环体:提示A输入用户名 接受 判断
            //循环条件: 用户名为空

            string userNameA = "";
            while (userNameA == "")
            {
                Console.WriteLine("请输入用户名,不能为空");
                userNameA = Console.ReadLine();

            }

            //第二个循环提示用户B输入用户名,要求B的用户名不能跟A的用户名相同,并且不能为空
            //只要为空,并且跟A的用户名相同,就一直提示用户B重新输入用户名
            //循环体:输入b的用户名 接受判断
            //循环条件:用户名为空 或者跟a的相同
            Console.WriteLine("请输入用户名,不能跟A相同,并且不能为空");
            string userNameB = Console.ReadLine();
            while (userNameB == "" || userNameB == userNameA)
            {
                if (userNameB == "")
                {
                    Console.WriteLine("用户名不能为空,请重新输入");
                    userNameB = Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("用户名不能跟A相同,请重新输入");
                    userNameB = Console.ReadLine();
                }
                
             }
            Console.ReadKey();
        }
    }
}

Do-while循环

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

namespace _9do_while循环
{
    class Program
    {
        static void Main(string[] args)
        {
            //小兰明天登台演出,老师说再把明天的演出歌曲唱一遍
            //如果满意,小兰就可以回家了,否则需要再练习直到老师满意

            //循环体:小兰唱了一遍 问老师满意么 老师回答
            //循环条件:老师不满意
            //Console.WriteLine("老师,我唱得您满意吗");
            //string answer = Console.ReadLine();
            //while (answer=="no")
            //{
            //    Console.WriteLine("老师我再唱一遍,您满意吗");
            //    answer = Console.ReadLine();
            //}
            遇见这种首先执行一遍循环体 拿着执行后的结果再去判断是否执行循环的循环
            我们推荐使用 do-while循环
            //Console.ReadKey();
            //string answer="";
            //do 
            //{
            //    Console.WriteLine("老师我唱得你满意吗?yes/no");
            //    answer=Console.ReadLine();

            //} while (answer=="no");
            //Console.WriteLine("ok放学回家");


            //用户密码
            //string name = "";
            //string pwd = "";
            //do
            //{
            //    Console.WriteLine("请输入用户名");
            //    name = Console.ReadLine();
            //    Console.WriteLine("请输入密码");
            //    pwd = Console.ReadLine();
            //} while (name != "admin" || pwd != "888888");
            //Console.WriteLine("登陆成功");


            //不断要求用户输入学生姓名,输入q结束
            //string name = "";
            //do 
            //{
            //    Console.WriteLine("请输入学生姓名,输入q结束");
            //    name = Console.ReadLine();
            //} while (name!="q");
            string name = "";
            while (name!="q")
            {
                Console.WriteLine("请输入学生姓名,输入q结束");
                name = Console.ReadLine();
            }
            Console.ReadKey();
        }

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值