C# 运算符和控制流
运算符
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 // 算术二元运算符 6 int arithmeticBinaryOperatorResult = 4 - 2; // +,-,*,/,% 7 8 // 赋值运算符 9 int x = 123; 10 x = x + 2; 11 x += 2; 12 x -= 2; 13 x /= 2; 14 x *= 2; 15 x %= 2; 16 17 // 自增/减运算符 18 x = x + 1; 19 x++; 20 x--; 21 x = 123; 22 System.Console.WriteLine($"{x++}, {x++}, {x}"); // 123, 124, 125 23 System.Console.WriteLine($"{++x}, {++x}, {x}"); // 126, 127, 127 24 Console.ReadKey(); 25 26 // 常量表达式 27 const int secondsPerDay = 60 * 60 * 24; 28 const int secondsPerWeek = secondsPerDay * 7; 29 } 30 }
控制流转简介
A. if 条件控制
B. while 和 do 条件控制
C. for 和 foreach 条件控制
D. switch 条件控制
if 条件控制的简单的例子
1 public class TicTacToe 2 { 3 public static void Begin() 4 { 5 string input; 6 7 System.Console.Write( 8 "1:与计算机玩;\n" + 9 "2:与其他人玩。\n" + 10 "选择:" 11 ); 12 input = System.Console.ReadLine(); 13 14 if (input == "1") 15 System.Console.WriteLine("你选择了与计算机玩。"); 16 else 17 System.Console.WriteLine("你选择了与其他人玩。"); 18 19 } 20 }
嵌套 if 条件控制的简单例子
1 public class TicTacToeTrivia 2 { 3 public static void Begin() 4 { 5 int input; 6 7 System.Console.Write("井字棋最多可以走几步(0 退出):"); 8 input = int.Parse(System.Console.ReadLine()); 9 10 if (input <= 0) 11 System.Console.WriteLine("退出..."); 12 else 13 if (input < 9) 14 System.Console.WriteLine($"井字棋可以走的步数应大于: {input}"); 15 else if (input > 9) 16 System.Console.WriteLine($"井字棋可以走的步数应小于 {input}"); 17 else 18 System.Console.WriteLine("正确。"); 19 } 20 }
C# 代码块的概念
布尔表达式
A. 关系或者相等性运算符,通过比较运算符两端的值获取 true 、false 结果。(bool result = input != 9 ;)
B. 逻辑运算符,通过比较逻辑运算符两端的值获取 true 、false 结果
while 循环
1 namespace WhileLoop 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 decimal current; 8 decimal previous; 9 decimal temp; 10 decimal input; 11 12 System.Console.Write("请输入一个正整数:"); 13 input = decimal.Parse(System.Console.ReadLine()); 14 current = previous = 1; 15 while (current <= input) 16 { 17 temp = current; 18 current = previous + current; 19 previous = temp; 20 } 21 System.Console.WriteLine($"跟随这个数的后一个Fibonacci数是 { current }"); 22 Console.ReadKey(); 23 } 24 } 25 } 26 /* 27 * 斐波那契数列(Fibonacci sequence),又称黄金分割数列、 28 * 因数学家列昂纳多·斐波那契(Leonardoda Fibonacci )以 29 * 兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个 30 * 数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐 31 * 波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, 32 * F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 33 */
do/while 循环
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 bool valid; 6 do 7 { 8 valid = false; 9 10 // 当前选手输入 11 System.Console.Write($"\n 选手 {currentPlayer}: 输入:"); 12 string input = System.Console.ReadLine(); 13 14 // 检查当前选手的输入 15 // ... 16 if (input == "1") 17 valid = true; 18 19 } while (!valid); 20 } 21 22 public static object[] currentPlayer { get; set; } 23 24 }
for 循环
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 int[] intergers = new int[] { 9, 5, 6, 1, 2, 3, 8, 7 }; 6 7 for (int i = 0; i < intergers.Length - 1; i++) 8 { 9 for (int j = 0; j < intergers.Length - i - 1; j++) 10 { 11 if (intergers[j] < intergers[j + 1]) 12 { 13 int temp = intergers[j]; 14 intergers[j] = intergers[j + 1]; 15 intergers[j + 1] = temp; 16 } 17 } 18 } 19 } 20 }
foreach 循环
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 var languages = new string[] { "C#", "COBOL", "Java", "C++", "Visual Basic", "Pascal", "Fortran", "Lisp", "J#" }; 6 7 foreach (var item in languages) 8 { 9 if (item.ToLower() == "java") 10 Console.Write(item); 11 12 // 不能在循环中改变循环体的对象,但对象的属性是可以改变的 13 // item = "Command"; 14 } 15 16 Console.ReadKey(); 17 }
switch 选择跳转
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Console.Write(SelectedMemo("C#")); 6 Console.ReadKey(); 7 } 8 9 public static string SelectedMemo(string word) 10 { 11 var memo = ""; 12 switch (word) 13 { 14 case "C#": 15 memo = "Micorsoft : 流行的编程语言。"; 16 break; 17 18 case "Java": 19 memo = "Sun : 流行的编程语言。"; 20 break; 21 default: 22 break; 23 } 24 25 return memo; 26 } 27 }