1、Convert类型转换
类型如果相兼容的两个变量,可以使用自动类型转换或者强制类型转换,
但是,如果两个类型的变量不兼容,比如 string与int或者string 与double,
这个时候我们可以使用一个叫做Convert的转换工厂进行转换。
注意:使用Convert进行类型转换,也需要满足一个条件:
面儿上必须要过的去。如果123abc就不行
1 string s = "123"; 2 //将字符串转换成int或者double类型 3 double d = Convert.ToDouble(s); 4 int n = Convert.ToInt32(s); 5 Console.WriteLine(d); 6 Console.WriteLine(n); |
通过 Convert.ToInt32(能转换成int类型的数据)来把其他类型数据转换成int类型
- 一切类型都可以转换为string类型
练习:
让用户输入姓名 语文 数学 英语 三门课的成绩,然后给用户显示:XX,你的总成绩为XX分,平均成绩为XX分。
1 Console.WriteLine("请输入你的姓名"); 2 string name = Console.ReadLine(); 3 Console.WriteLine("请输入你的语文成绩"); 4 string strChinese = Console.ReadLine();//读取输入的东西要存在string里面 5 Console.WriteLine("请输入你的数学成绩"); 6 string strMath = Console.ReadLine(); 7 Console.WriteLine("请输入你的英语成绩"); 8 string strEnglish = Console.ReadLine(); //如果直接加就是778899,要转类型 9 double Chinese = Convert.ToDouble(strChinese); 10 double Math = Convert.ToDouble(strMath); 11 double English = Convert.ToDouble(strEnglish); 12 double SumScore = Chinese + Math + English; 13 double AvgDcore = SumScore / 3; //(int)SumScore*1.0 / 3; 14 Console.WriteLine("{0},你的总成绩为{1}分,平均成绩为{2:0.00}分", name, SumScore, AvgDcore); |
练习2:
1 //输入一个数字,输出这个数的2倍 2 Console.WriteLine("请输入一个数字"); 3 string StrNumber = Console.ReadLine(); 4 double Number = Convert.ToDouble(StrNumber); 5 Console.WriteLine(Number * 2); |
简化一下
1 Console.WriteLine("请输入一个数字"); 2 double Number = Convert.ToDouble(Console.ReadLine()); 3 Console.WriteLine(Number * 2); |
2、算数运算符
++:分为前++和后++,不管是前++还是后++,最终的结果都是给这个变量加一。
区别表现表达式当中,
如果是前++,则先给这个变量自身加一,然后带着这个加一后的值去参与运算。
即先加再参与运算
如果是后++,则先拿原值参与运算,运算完成后,再讲这个变量自身加一。
即先参与运算再加
--:同上。
例:
1 int number = 10; 2 //number++; //+1 3 //++number; //一样+1 可以理解为number=number+1; 4 5 //number--; //-1 6 --number; //一样-- 同上 7 Console.WriteLine(number); |
例2:
1 int number = 10; 2 int result = 10 + number++; 3 //++在后面表示先用原值进行运算再加1 4 //可以写成 5 int result = 10 + number; 6 number++; 7 8 int result = 10 + ++number; 9 //++在前面表示先加1再进行运算 10 //可以写成 11 number++; 12 int result = 10 + number; 13 14 Console.WriteLine(number); 15 Console.WriteLine(result); |
--亦是如此
例3:
1 int a = 5; 2 int b = a++ + ++a * 2 + --a + a++; //5 + 7*2 +6 +6=31 最终a是7 3 // 5 前面也要执行++所以现在是6,所以为7 4 Console.WriteLine(a); //5 这是错误的 5 Console.WriteLine(b); //5+6*2+4+5=26 |
3、运算优先级
对于向加加或者减减这样只需要一个操作数就能完成的运算,我们称之为一元运算符。
+ - * / % 对于这些需要两个或以上才能完成运算的操作符,我们称之为二元运算符。
一元运算符的优先级要高于二元运算符。
如果在一个表达式当中,既有一元运算符,又有二元运算符,我们首先计算一元运算符。
int number=10;
int result=10 + ++number; 先计算
练习:
Var=5*5=25 var2=6 var3=5
上题中如果改成:
Var1=++var2 * var3--;
Var1=?
Var1=6*6=36 var2=6 var3=5
4、关系运算符
>
<
>=
<=
==
!=
关系运算符是用来描述两个事物之间的关系
由关系运算符连接的表达式称之为关系表达式。
5、bool类型
在c#中我们用bool类型来描述对或者错。
bool类型的值只有两个 一个true 一个false
1 bool b = 1500 > 1; //true 2 bool b = 3 > 1000; //false 3 bool b = 39 < 18; //false 4 bool b = 20 == 20; //true |
6、逻辑运算符
&& 逻辑与 全真则真
|| 逻辑或 一真则真
! 逻辑非
逻辑与&&
表达式1 | 表达式2 | 表达式&&表达式 |
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 | 假 |
逻辑或||
表达式1 | 表达式2 | 表达式||表达式 |
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
又逻辑运算符连接的表达式叫做逻辑表达式
逻辑运算符两边放的一般都是关系表达式或者bool类型的值。
5>3 &&true
3>5||false
逻辑与先计算
短路原则
一个的话没有短路,不推荐
!表达式
逻辑表达式的结果同样也是bool类型
练习:
1 //让用户输入老苏的语文和数学成绩,输出以下判断是否正确,正确输出True,错误输出False 2 //1)老苏的语文和数学成绩都大于90分 3 Console.WriteLine("小苏,请输入你的语文成绩"); 4 int Chinese = Convert.ToInt32(Console.ReadLine()); 5 Console.WriteLine("小苏,请输入你的数学成绩"); 6 int Math = Convert.ToInt32(Console.ReadLine()); 7 //bool b = Chinese > 90 && Math > 90; 8 //Console.WriteLine(b); 9 //Console.ReadKey(); 10 11 //2)语文和数学有一门是大于90分的 12 bool b = Chinese > 90 || Math > 90; 13 Console.WriteLine(b); 14 Console.ReadKey(); |
练习2:
写下判断闰年的表达式,设待判断的年份变量为year.
润年的判定(符合下面两个条件之一):
年份能够被400整除.(2000)
年份能够被4整除但不能被100整除.(2008)
让用户输入一个年份,如果是润年,则输出true,如果不是,则输出false.
2100/1600/1800/2009年是闰年吗?
1 Console.WriteLine("请输入需要判断的年份"); 2 int year = Convert.ToInt32(Console.ReadLine()); 3 bool b = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); 4 //先与后或,与的优先级高于或 5 Console.WriteLine(b); |
7、复合赋值运算符
int number=10;
+= :
number+=20;
number=number+20; 30
-=
number-=5;
number=number-5; 5
*=
number*=5;
number=number*5; 50
/=
%=
顺序结构:程序从Main函数进入,从上到下一行一行的执行,不会落下任何一行。
分支结构:if if-else
选择结构:if else-if switch-case
循环结构:while do-while for foreach
8、if结构
if语句:
语法:
if(判断条件)
{
要执行的代码;
}
判断条件:一般为关系表达式或者bool类型的值。
执行过程:程序运行到if处,首先判断if所带的小括号中的判断条件,
如果条件成立,也就是返回true,则执行if所带的大括号中的代码,
如果判断条件不成立,也就是返回一个false。则跳过if结构,继续向下执行。
if结构的特点:先判断,再执行,有可能一行代码都不执行
用于一种情况的判断。
小练习:
1 //如果老苏的(chinese music) 2 //语文成绩大于90并且音乐成绩大于80 3 //语文成绩等于100并且音乐成绩大于70,则奖励100元. 4 5 Console.WriteLine("请输入语文成绩"); 6 int Chinese = Convert.ToInt32(Console.ReadLine()); 7 Console.WriteLine("请输入音乐成绩"); 8 int music = Convert.ToInt32(Console.ReadLine()); 9 10 if ((Chinese > 90 && music > 80) || (Chinese == 100 && music > 70)) 11 { 12 Console.WriteLine("奖励100元"); 13 } |
小练习2:
1 //让用户输入用户名和密码,如果用户名为admin,密码为mypass,则提示登录成功. 2 Console.WriteLine("请输入用户名"); 3 string name = Console.ReadLine(); 4 Console.WriteLine("请输入密码"); 5 string password = Console.ReadLine(); 6 7 if (name == "admin" && password == "mypass") 8 { 9 Console.WriteLine("登录成功"); 10 } |
9、if-else
语法:
if(判断条件)
{
执行的代码;
}
else
{
执行的代码
}
执行过程:程序执行到if处,首先判断if所带的小括号中的判断条件是否成立,
如果成立,也就是返回一个true,则执行if所带的大括号中的代码,
执行完成后,跳出if-else结构。
如果if所带的小括号中的判断条件不成立,也就是返回一个false,
则跳过if语句,执行else所带的大括号中的语句,执行完成后,跳出if-else结构。
if-else特点:先判断,再执行,最少都要执行一条代码。
用于两种情况的判断
注意:else永远跟离它最近的那个if配对
练习
1 //如果小赵的考试成绩大于90(含)分,那么爸爸奖励他100元钱, 2 //否则的话,爸爸就让小赵跪方便面. 3 Console.WriteLine("请输入小赵的考试成绩"); 4 int score = Convert.ToInt32(Console.ReadLine()); 5 6 if (score >= 90) 7 { 8 Console.WriteLine("给100元"); 9 } 10 else 11 { 12 Console.WriteLine("跪方便面"); 13 } |
10、if else-if
作用:用来处理多条件的区间性的判断。
语法:
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 if神马都不做。
else可以省略。
练习:
1 //对学员的结业考试成绩评测(考虑用if好还是用if-else好) 2 //成绩 >= 90 :A 3 //90 > 成绩 >= 80 :B 4 //80 > 成绩 >= 70 :C 5 //70 > 成绩 >= 60 :D 6 //成绩 < 60 :E 7 Console.WriteLine("请输入学员的考试成绩"); 8 int score = Convert.ToInt32(Console.ReadLine()); 9 10 #region if的做法 11 if (score >= 90) 12 { 13 Console.WriteLine("A"); 14 } 15 if (score >= 80 && score < 90) 16 { 17 Console.WriteLine("B"); 18 } 19 if (score >= 70 && score < 80) 20 { 21 Console.WriteLine("C"); 22 } 23 if (score >= 60 && score < 70) 24 { 25 Console.WriteLine("D"); 26 } 27 if (score < 60) 28 { 29 Console.WriteLine("E"); 30 } 31 else 注意else永远跟离它最近的那个if配对 所以不能直接写 32 { 33 Console.WriteLine(""); 34 } 35 #endregion 36 37 #region if-else的做法(不推荐)else-if更好 38 if (score >= 90) 39 { 40 Console.WriteLine("A"); 41 } 42 else //里边的都是<90 43 { 44 if (score >= 80) 45 { 46 Console.WriteLine("B"); 47 } 48 else //<80 49 { 50 if (score >= 70) 51 { 52 Console.WriteLine("C"); 53 } 54 else //<70 55 { 56 if (score >= 60) 57 { 58 Console.WriteLine("D"); 59 } 60 else //<60 61 { 62 Console.WriteLine("E"); 63 } 64 } 65 } 66 } 67 #endregion 68 69 #region 最好的方法else-if 70 if (score >= 90) 71 { 72 Console.WriteLine("A"); 73 } 74 else if (score >= 80) 75 { 76 Console.WriteLine("B"); 77 } 78 else if (score >= 70) 79 { 80 Console.WriteLine("C"); 81 } 82 else if (score >= 60) 83 { 84 Console.WriteLine("D"); 85 } 86 else 87 { 88 Console.WriteLine("E"); 89 } 90 #endregion |
总结
if处理一种情况
If-else处理两种情况
if else-if处理多种情况
几个练习:
题1:
1 #region 题1 2 //比较3个数字的大小,不考虑相等 输出最大数 3 Console.WriteLine("请输入第一个数字"); 4 int num1 = Convert.ToInt32(Console.ReadLine()); 5 Console.WriteLine("请输入第二个数字"); 6 int num2 = Convert.ToInt32(Console.ReadLine()); 7 Console.WriteLine("请输入第三个数字"); 8 int num3 = Convert.ToInt32(Console.ReadLine()); 9 #region 解1 10 //第一个数比其他数大 11 if (num1 > num2 && num1 > num3) 12 { 13 Console.WriteLine(num1); 14 } 15 //第二个数比其他数大 16 else if (num2 > num1 && num2 > num3) 17 { 18 Console.WriteLine(num2); 19 } 20 //第三个数比其他数大 21 else 22 { 23 Console.WriteLine(num3); 24 } 25 #endregion 26 #region 解2 27 //先让第一个数字和第二个数字比较,如果大于第二个数字,再和第三个数字比较 28 if (num1 > num2) 29 { 30 //如果第一个数字比第二个数字大,在和第三个数字比较,成立则最大 31 if (num1 > num3) 32 { 33 Console.WriteLine(num1); 34 } 35 //否则第三个数字比第一个大,又因为第一比第二大 36 else 37 { 38 Console.WriteLine(num3); 39 } 40 } 41 //第二个数字大于第一个数字,让第二个和第三个比较,若第二个比第三个大则最大 42 else 43 { 44 if (num2 > num3) 45 { 46 Console.WriteLine(num2); 47 } 48 //第三个最大 49 else 50 { 51 Console.WriteLine(num3); 52 } 53 } 54 #endregion 55 56 #endregion |
题2:
1 //提示用户输入密如果密码是“88888”则提示正确, 2 //否则要求再输入一次,如果密码是“88888”则提示正确, 3 //否则提示错误,程序结束。 4 //(如果我的密码里有英文还要转换吗,密码:abc1) 5 6 Console.WriteLine("请输入密码"); 7 string password = Console.ReadLine(); 8 if (password == "88888") 9 { 10 Console.WriteLine("输入正确"); 11 } 12 else 13 { 14 Console.WriteLine("请再输入一次"); 15 password = Console.ReadLine(); 16 if (password == "88888") 17 { 18 Console.WriteLine("输入正确"); 19 } 20 else 21 { 22 Console.WriteLine("错误"); 23 } 24 } |
题3:
1 //提示用户输入用户名,然后再提示输入密码, 2 //如果用户名是“admin”并且密码是“88888”,则提示正确, 3 //否则,如果用户名不是admin还提示用户用户名不存在, 4 //如果用户名是admin则提示密码错误. 5 //多种情况使用else-if 6 7 Console.WriteLine("请输入用户名"); 8 string username = Console.ReadLine(); 9 Console.WriteLine("请输入密码"); 10 string password = Console.ReadLine(); 11 if (username == "admin" && password == "88888") 12 { 13 Console.WriteLine("正确"); 14 } 15 else if (username == "admin") 16 { 17 Console.WriteLine("密码错误"); 18 } 19 else if (password == "88888") 20 { 21 Console.WriteLine("用户名错误"); 22 } 23 else 24 { 25 Console.WriteLine("全部错误,退出"); 26 } |
题4:
1 //提示用户输入年龄,如果大于等于18,则告知用户可以查看, 2 //如果小于10岁,则告知不允许查看, 3 //如果大于等于10岁并且小于18,则提示用户是否继续查看(yes、no), 4 //如果输入的是yes则提示用户请查看,否则提示"退出,你放弃查看"。 5 6 Console.WriteLine("请输入年龄"); 7 int age = Convert.ToInt32(Console.ReadLine()); 8 if (age >= 18) 9 { 10 Console.WriteLine("可以继续查看"); 11 } 12 else if (age < 10) 13 { 14 Console.WriteLine("不允许查看"); 15 } 16 else if (age >= 10 && age < 18) 17 { 18 Console.WriteLine("是否继续查看(yes、no)"); 19 string option = Console.ReadLine(); 20 if (option == "yes") 21 { 22 Console.WriteLine("请查看"); 23 } 24 else if (option == "no") 25 { 26 Console.WriteLine("退出,你放弃查看"); 27 } 28 //else 29 //{ 30 // Console.WriteLine("退出,你放弃查看"); 31 //} 32 } |