C#基础篇三流程控制1
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace P01Review { class Program { //全局变量如果没有初始化也没有复制,那么编译器会给它默认值: // 数值类型默认值:0 // bool 默认值:false // string 默认值:null //1.2全局变量(类的成员变量) static int count; static void Main(string[] args) { Switch();//调用方法 Console.ReadLine(); } static void Switch() { //1.根据 用户 输入的狗的类型,显示不同狗的价格 Console.WriteLine("请输入您喜欢的狗狗的类型:"); string strDogType = Console.ReadLine(); decimal price = 0m; //if (strDogType == "苏格兰牧羊犬") //{ // price = 3000m; //} //else if (strDogType == "德国牧羊犬") //{ // price = 5000m; //} //else if (strDogType == "萨摩耶") //{ // price = 4000m; //} //else //{ // price = 0m; //} //switch语法 主要用来 判断 一个变量的值! switch (strDogType) { //可以让 多个 case 条件 共享同一段代码~~~ case "苏格兰牧羊犬": case "德国牧羊犬": { price = 3000m; break; } case "萨摩耶": { price = 4000m; break; } default://默认操作,相当于 if else 里的 else { price = 0m; break; } } //case 是一个独立的作用域,作用域中 创建的变量,在外部访问不到! //Console.WriteLine(a);//访问不到 //int numCount =12; //switch (numCount) //{ // //错误:因为 case 后 是跟 一个 值! 用来 和 传入switch的numCount进行 判等比较; // // 如此出 ,非要写一个 numCount>0 的表达式,那么 case 就会运行 表达式,并 把表达式 的 结果 拿来和 switch的变量 numCount 进行 判等比较 // // 【所以,简单的说,就是 switch case 不是用来 进行 范围比较的,而是用来 做 判等比较的!】 // //case numCount > 0: // //break; //} //swich中 可以传递的参数类型有: string字符串 ,数值, char字符,bool #region swich中 可以传递的参数类型 bool isFinished = true; switch (isFinished) { case true: break; case false: break; } int num = 110; switch (num) { case 1: break; case 2: break; default: break; } char chr = '好'; switch (chr) { case '好': break; case '爱': break; case '你': break; case '信': break; } #endregion Console.WriteLine("您选择的犬种为" + strDogType + ",价格:" + price); } #region 10.0 逻辑判断 if...else if...else /// <summary> /// 10.0 逻辑判断 if...else if...else /// </summary> static void IfElse() { Console.WriteLine("请输入您最喜欢老师的名字:"); string strName = Console.ReadLine(); /*如果满足 if条件,则只执行 if里的代码 if (strName == "苍老师")//如果 { Console.WriteLine("讨厌~~~"); } else//否则:如果没有满足 if条件,则执行 else里的代码 { Console.WriteLine("太讨厌了~~!你怎么能不像小林老师一样 最喜欢苍老师呢?"); }*/ //2.if..else if ..else 一种多个条件的判断逻辑,其中任意个判断成立的话,后面的判断都不需要 执行了! if (strName == "苍老师") { Console.WriteLine("禽兽~~~"); } else if (strName == "波老师") { Console.WriteLine("禽兽中的禽兽~~~"); } else if (strName == "龙泽老师") { Console.WriteLine("禽兽中的禽兽中的战斗机~~~"); } else { Console.WriteLine("不认识~~~~~~~"); } } #endregion #region A.课堂练习 void ClassEx() /// <summary> /// A.课堂练习 /// </summary> static void ClassEx() { //1.接收 学员的分数 和 名字 Console.WriteLine("请输入您的名字:"); string strName = Console.ReadLine(); Console.WriteLine("请输入您的分数:"); int intScore = Convert.ToInt32(Console.ReadLine()); string strScore = "E"; //if = 如果 , else = 否则 ,else if = 否则 如果 if (intScore <= 60) { strScore = "E"; } else if (intScore > 60 && intScore <=70) { strScore = "D"; } else if (intScore > 70 && intScore <= 80) { strScore = "C"; } else if (intScore > 80 && intScore <= 90) { strScore = "B"; } else if (intScore > 90) { strScore = "A"; } string strMsg = string.Format("恭喜您【{0}】,分数为:{1}", strName, strScore); Console.WriteLine(strMsg); } #endregion #region 9.0 数值之间的 运算 void NumOperator() /// <summary> /// 9.0 数值之间的 运算 /// </summary> static void NumOperator() { //两个 不同类型的 数值 进行运算,会自动 把低位的数值 转成 与其进行运算 的 高位 数值类型 int num = (int)(11 / 11.2); double num2 = 11 / 11.2;//运算时,11 会自动由int转成 double 然后再与 11.2进行运算,两个double运算的结果 还是 double // % 取模/求余 int res = 12 % 5; //2 int res1 = 23 % 2;//1 } #endregion #region 8.0 字符串的连接 Format方法 -void StrContact() /// <summary> /// 8.0 字符串的连接 Format方法 /// </summary> static void StrContact() { string strMsg0 = "Hi~~"; string strName = "小白"; string strShowLove = "I Love U~~~~"; string strMsg3 = strMsg0 + strName + strShowLove; //Console.WriteLine(strMsg + strMsg2); Console.WriteLine(strMsg3); //1.0 拼接 字符串 string strMsg4 = "哈哈哈~~~" + strName + ",哈哈哈哈~~~" + strShowLove + "有病~~!"; //2.0 另一种拼接字符串的方式:string.Format方法 string strMsg5 = string.Format("哈 {1} 哈哈~~~{0},哈哈哈哈~~~有病~!{0}", strName, strShowLove); Console.WriteLine(strMsg5); string strMsg6 = string.Format("{0} * {1} = {2}", 2, 50, 100); Console.WriteLine(strMsg6); } #endregion #region 7.0 数据转型(值类型的数据转型) /// <summary> /// 7.0 数据转型(值类型的数据转型) /// </summary> static void ConvertType() { //1.0 值类型:int/float/double/bool/decimal //2.将字符串转成 对应 值类型 Console.WriteLine("请输入一个整型:"); string strInt = Console.ReadLine(); int numInt = int.Parse(strInt); int numInt2 = Convert.ToInt32(strInt); Console.WriteLine("请输入一个浮点型:"); string strFloat = Console.ReadLine(); float numFloat = float.Parse(strFloat);//11.1 float numFloat2 = Convert.ToSingle(strInt); Console.WriteLine("请输入一个双精度浮点型:"); string strDouble = Console.ReadLine(); double numDouble = double.Parse(strDouble);//11.1 double numDouble2 = Convert.ToDouble(strDouble); Console.WriteLine("请输入一个bool型:"); string strBoole = Console.ReadLine(); bool boolRes = bool.Parse(strBoole); bool boolRes2 = Convert.ToBoolean(strBoole); float ss = 11.1f; decimal de = 11.1m; double dd = 11.1; } #endregion #region 6.0 总结 Console的知识点 void ConsolePoint() /// <summary> /// 6.0 总结 Console的知识点 /// </summary> static void ConsolePoint() { Console.Write("哈哈哈\n");//相当于 Console.WriteLine("哈哈哈"); } #endregion #region 5.1 购买道具 void BuyAKnife() /// <summary> /// 5.1 购买道具 /// </summary> static void BuyAKnife() { Console.WriteLine("欢迎光临【新疆刀具店】"); Console.WriteLine("1-西瓜刀(50); 2-东洋刀(200); 3-杀猪刀(300)"); //1.接收用户要购买的 刀具名称 string strDaoName = Console.ReadLine();//接收用户的输入 //2.接收用户要购买的 数量 Console.Write("请输入您要购买的数量:"); string strNum = Console.ReadLine(); //2.1将接收到的 【数值字符串】 转成 整型 变量 int num = int.Parse(strNum); //3.根据刀具的类型名称,结合 购买数量 计算总价 int price = 0;//总价格 if (strDaoName == "西瓜刀") { price = 50 * num; } if (strDaoName == "东洋刀") { price = 200 * num; } if (strDaoName == "杀猪刀") { price = 300 * num; } //4.如果购买的数量 超过了 10 把,那么总价 打8折;超过30把,总价 打6折; if (num > 10 && num <= 30)//当要判断多个条件满足时,可以使用 && 符号 来连接多个表达式, 10< x <=30 { //50 * 0.8 -> 整数和浮点数进行运算的结果 还是浮点数 = 40.0 price = (int)(price * 0.8);//所以,此处 需要 将 运算的double类型的结果 转成 int类型,然后 设置给 int类型的 price 变量 } if (num > 30) { price = (int)(price * 0.6); } Console.WriteLine("您要购买" + num + "把【" + strDaoName + "】成功,总价格【" + price + "】~~"); } #endregion #region 5.0 购买玩具 void GetUserInput() /// <summary> /// 5.0 购买玩具 /// </summary> static void GetUserInput() { //1.买 玩具 //1.1展示玩具 string toyNames = "1.玩具狗(20元/个);2.玩具熊(80元/个);3.遥控飞机(200元/个);"; Console.WriteLine("请选择您喜欢的玩具:" + toyNames); //1.2接收用户 想购买的 玩具名称 //调用 Console.ReadLine() 方法,此方法 会【返回】用户在控制台输入的 字符串 string strUsrToyName = Console.ReadLine();//接收用户输入的一行字符串,并存入 字符串变量 strUserChoose //a.询问用户购买数量 Console.Write("请问您要购买的数量是:"); //a1.接收用户输入的 数量-【数值 字符串】 string strCount = Console.ReadLine(); //a2.将 【数值 字符串】 转成 【数值】,并存入 整型 变量中 int count = int.Parse(strCount);//int.Parse方法 专门用来 将 【数值字符串】 转成 【整型】 //b.并根据 数量 和 不同玩具的价格 显示总价 //b0.总价格 int price = 0; //b1.如果 用户购买的 是 玩具狗,那么 就用玩具狗的价格 20 * 购买数量 if (strUsrToyName == "玩具狗")//如果满足if的条件,就会执行 if大括号里的代码;如果不满足,就跳过if的大括号 { price = 20 * count;//根据 购买数量 计算 总价格 } //b2.如果 用户购买的 是 玩具熊,那么 就用 玩具熊 的价格 80 * 购买数量 if (strUsrToyName == "玩具熊") { price = 80 * count;//根据 购买数量 计算 总价格 } //b3.如果 用户购买的 是 遥控飞机,那么 就用 遥控飞机 的价格 200 * 购买数量 if (strUsrToyName == "遥控飞机") { price = 200 * count;//根据 购买数量 计算 总价格 } //1.3将玩具交给用户 //Console.Write("恭喜您,成功购买了:"); //Console.WriteLine(strUserChoose); //注意:字符串之间使用 + ,起到的连接作用:结果会生成一个新的字符串 string strMsg = "恭喜您,成功购买了:" + count + "个【" + strUsrToyName + "】,总价:" + price; Console.Write(strMsg); } #endregion #region 4.0 命名规范 void NamedRules() /// <summary> /// 4.0 命名规范 /// </summary> static void NamedRules() { ////1.关于变量 的初始化 ////1.1 局部变量:定义在函数中的变量,一定要给值 //int a = 1; ////a = 1; //Console.WriteLine(a); //Console.WriteLine(count); //-------------命名规范-如果不符合,编译器会报错!----------------- //1.Rule01:命名规范-首字母必须是 英文字母 或 下划线,可以使用 中文--但是,强烈不推荐使用!会被歧视! string name = "小白"; //string 姓名 = ""; //-------------命名规则:程序员之间共同遵守的约定,但是编译器不在乎!----------------- //2.Rule02:要有意义,通过变量名称就能看出 变量里存的是什么值 //3.Rule03:当存在多个 单词的时候,首字母小写,其它单词的首字母大写! string xueXiaoMing = ""; //4.Rule04:如果是【全局变量】,则一般以 _开头,如:int _age =1; } #endregion #region 3.0 一次性定义多个变量 void DeclareManyVar() /// <summary> /// 3.0 一次性定义多个变量 /// </summary> static void DeclareManyVar() { string strName = "小林林"; int age = 18; bool sex = false;//一般使用bool值来保存性别:男-true,女-false //一次性声明多个变量:类型必须一致! -不推荐使用 string strName2 = "周林林", strName3 = "胡凌浩", strName4 = "江佳恒", strName5 = "伍湖", strName6 = "张扬波"; } #endregion #region 2.0 局部变量和全局变量 static void Hello() { //2.局部变量 只能在方法内部使用,并有效;出了方法,就访问不到了! int a = 11; //int a = 123; 变量名,不能与 【其它】 变量相同:当前方法里的【其它】, //3.当局部变量和全局变量 同名时,编译器允许通过,但是具体访问到的,优先访问 局部变量 int count = 12; //如果 方法 和 类中 有同名的 变量,那么 方法里的代码 会使用 方法中的 变量(就近原则) Console.WriteLine(count); } #endregion } }