(主要是传智播客的赵剑宇老师上课的笔记,由于这几天的课和以前上C学C语言和C++几乎都学过所有开始跳着学,在此感谢赵剑宇老师)
1、类型如果相兼容的两个变量,可以使用自动类型转换或者强制类型转换,
但是,如果两个类型的变量不兼容,比如string与int或者string与double,这时候我们可以使用一个叫做Convert的转换工厂进行转换。
注意:使用Convert进行类型转换,也需要满足一个条件:
面上必须过的去,看起来能转换。
练习1
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication6 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string lanuge; 14 string math; 15 Console.WriteLine("语文:"); 16 lanuge = Console.ReadLine(); 17 Console.WriteLine("数学:"); 18 math = Console.ReadLine(); 19 20 decimal sum = Convert.ToDecimal(lanuge)+Convert.ToDecimal(math); 21 Console.WriteLine("总成绩:{0}", sum); 22 } 23 } 24 }
输出结果:
语文:
100
数学:
100
总成绩:200
请按任意键继续. . .
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication6 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string name; 14 string lanuge; 15 string math; 16 string english; 17 Console.WriteLine("你的名字:"); 18 name = Console.ReadLine(); 19 Console.WriteLine("语文:"); 20 lanuge = Console.ReadLine(); 21 Console.WriteLine("数学:"); 22 math = Console.ReadLine(); 23 Console.WriteLine("英语:"); 24 english = Console.ReadLine(); 25 26 decimal sum = Convert.ToDecimal(lanuge)+Convert.ToDecimal(math)+Convert.ToDecimal(english); 27 decimal average = sum / 3; 28 Console.WriteLine("姓名:", name); 29 Console.WriteLine("总成绩:{0}分", sum); 30 Console.WriteLine("平均成绩:{0}分", average); 31 } 32 } 33 }
输出结果:
你的名字:
007
语文:
100
数学:
100
英语:
100
姓名:
总成绩:300分
平均成绩:100分
请按任意键继续. . .
2、算数运算符
++
{
++分两种:
结果都是变量加1
1、前++
例:
int t = 10;
int i = ++t;
那么i = 11, t = 11;
2、后++
int t = 10;
int i = t++;
那么i = 10, t = 11;
}
--
{
--分两种:
结果都是变量减1
1、前--
int t = 10;
int i = --t;
那么i = 9, t = 9;
2、后--
int t = 10;
int i = t--;
那么i = 10, t = 9;
}
3、
对于向加加或者减减这样只需要一个操作数就能完成的运算,我们称之为一元运算符。
+ - * / % 对于这些需要两个或以上才能完成运算的操作符,我们称之为二元运算符。
一元运算符的优先级要高于而元运算符。
如果在一个表达式当中,既有一元运算符,又有二元运算符,我们首先计算一元运算符。
int number=10;
int result=10 + ++number;
4、关系运算符
>
<
>=
<=
==
!=
关系运算符是用来描述两个事物之间的关系
由关系运算符连接的表达式称之为关系表达式。
5、bool类型
在c#中我们用bool类型来描述对或者错。
bool类型的值只有两个 一个true 一个false
6、逻辑运算符
&& 逻辑与
C#中&&与&区别
bool b = 5>6&&6>7;
当5>6已经不成立的时候,不会去判断6>7
而bool b = 5>6 & 6>7,当5>6已经不成立的时候,还会去断送6>7,
没有&&效率更好。
||逻辑或
C#中||与|区别
bool b = 5<6&&6<7;
当5<6已经成立的时候,不会去判断6<7
而bool b = 5<6 & 6<7,当5<6已经成立的时候,还会去断送6<7,
没有||效率更好。
!逻辑非
又逻辑运算符连接的表达式叫做逻辑表达式
逻辑运算符两边放的一般都是关系表达式或者bool类型的值。
5>3 &&true
3>5||false
!表达式
逻辑表达式的结果同样也是bool类型
7、复合赋值运算符
int number=10;
+= :
number+=20;
number=number+20;
-=
number-=5;
number=number-5;
*=
number*=5;
number=number*5;
/=
%=
顺序结构:程序从Main函数进入,从上到下一行一行的执行,不会落下任何一行。
分支结构:if if-else
选择结构:if else-if switch-case
循环结构:while do-while for foreach
8、
if语句:
语法:
if(判断条件)
{
要执行的代码;
}
判断条件:一般为关系表达式或者bool类型的值。
执行过程:程序运行到if处,首先判断if所带的小括号中的判断条件,
如果条件成立,也就是返回true,则执行if所带的大括号中的代码,
如果判断条件不成立,也就是返回一个false。则跳过if结构,继续向下执行。
if结构的特点:先判断,再执行,有可能一行代码都不执行
用于一种情况的判断。
练习2
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication9 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 int age; 14 Console.WriteLine("请输入你的年龄:"); 15 age = Convert.ToInt32(Console.ReadLine()); 16 17 if (age > 23) 18 { 19 Console.WriteLine("你到了结婚的年龄了!"); 20 } 21 } 22 } 23 }
输出结果:
请输入你的年龄:
25
你到了结婚的年龄了!
请按任意键继续. . .
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication9 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 decimal chinese, music; 14 Console.WriteLine("请输入老苏的语文:"); 15 chinese = Convert.ToDecimal(Console.ReadLine()); 16 Console.WriteLine("请输入老苏的音乐:"); 17 music = Convert.ToDecimal(Console.ReadLine()); 18 19 if ((chinese > 90 && music > 80) || (chinese == 100 & music > 70)) 20 { 21 Console.WriteLine("奖励100元!"); 22 } 23 } 24 } 25 }
输出结果:
请输入老苏的语文:
100
请输入老苏的音乐:
77
奖励100元!
请按任意键继续. . .
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication9 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string name; 14 string key; 15 16 Console.WriteLine("请输入你的用户名:"); 17 name = Console.ReadLine(); 18 Console.WriteLine("请输入你的密码:"); 19 key = Console.ReadLine(); 20 21 if (name == "admin" && key == "mypass") 22 { 23 Console.WriteLine("登录成功!"); 24 } 25 } 26 } 27 }
输出结果:
请输入你的用户名:
admin
请输入你的密码:
mypass
登录成功!
请按任意键继续. . .
9、if-else
语法:
if(判断条件)
{
执行的代码;
}
else
{
执行的代码
}
执行过程:程序执行到if处,首先判断if所带的小括号中的判断条件是否成立,
如果成立,也就是返回一个true,则执行if所带的大括号中的代码,
执行完成后,跳出if-else结构。
如果if所带的小括号中的判断条件不成立,也就是返回一个false,
则跳过if语句,执行else所带的大括号中的语句,执行完成后,跳出if-else结构。
if-else特点:先判断,再执行,最少都要执行一条代码。
用于两种情况的判断
注意:else永远跟离它最近的那个if配对
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可以省略。
课上练习:
练习3
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication1 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string key; 14 15 Console.WriteLine("请输入密码:"); 16 key = Console.ReadLine(); 17 18 if (key == "88888") 19 { 20 Console.WriteLine("密码正确!"); 21 } 22 else 23 { 24 Console.WriteLine("请再输入一次:"); 25 key = Console.ReadLine(); 26 if (key == "88888") 27 { 28 Console.WriteLine("密码正确!"); 29 } 30 } 31 } 32 } 33 }
输出结果:
请输入密码:
7
请再输入一次:
88888
密码正确!
请按任意键继续. . .
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication1 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string name; 14 string key; 15 16 Console.WriteLine("请输入用户名:"); 17 name = Console.ReadLine(); 18 Console.WriteLine("请输入密码:"); 19 key = Console.ReadLine(); 20 21 if (name == "admin" && key == "88888") 22 { 23 Console.WriteLine("登录正确!"); 24 } 25 else 26 { 27 if (name != "admin") 28 { 29 Console.WriteLine("用户名不存在!"); 30 } 31 else 32 { 33 Console.WriteLine("密码错误!"); 34 } 35 } 36 } 37 } 38 }
输出结果:
请输入用户名:
007
请输入密码:
88888
用户名不存在!
请按任意键继续. . .
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication1 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 int age; 14 string yesNo; 15 16 Console.WriteLine("请输入你的年龄:"); 17 age = Convert.ToInt32(Console.ReadLine()); 18 19 if (age >= 18) 20 { 21 Console.WriteLine("允许查看!"); 22 } 23 else if (age < 10) 24 { 25 Console.WriteLine("不允许查看!"); 26 } 27 else if (age >= 10 && age < 18) 28 { 29 Console.WriteLine("提示用户是继续查看(yes或no)?"); 30 yesNo = Console.ReadLine(); 31 if (yesNo == "yes" || yesNo == "Yes" || yesNo == "YES") 32 { 33 Console.WriteLine("请查看!"); 34 } 35 else if (yesNo == "no" || yesNo == "No" || yesNo == "NO") 36 { 37 Console.WriteLine("程序即将退出!"); 38 } 39 else 40 { 41 Console.WriteLine("yes或no输入错误!"); 42 } 43 } 44 } 45 } 46 }
输出结果:
请输入你的年龄:
15
提示用户是继续查看(yes或no)?
yes
请查看!
请按任意键继续. . .