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