1、条件语句
C#支持if、else和switch
三种常见的条件语句
1)、if...语句、if...else...语句、if...else if...else语句、嵌套if...else...语句
bool bo1 = true;
bool bo2 = false;
bool bo3 = false;
//if语句
if (bo1)
{
Console.WriteLine("bo1为true的时候执行的代码块");
}
//if...else...语句
if (bo2)
{
Console.WriteLine("bo2为true的时候执行的代码块");
}
else
{
Console.WriteLine("bo2为false的时候执行的代码块");
}
//if...else if...else...语句
if (bo2)
{
Console.WriteLine("这是当bo2为true的时候执行的代码块");
}
else if (bo3)
{
Console.WriteLine("这是当bo3为true的时候执行的代码块");
}
else
{
Console.WriteLine("这是当bo2和bo3都为假的时候执行的代码块");
}
//if...else...嵌套语句
if(bo2)
{
if(bo3)
{
Console.WriteLine("这是当bo2为true且bo3为true的时候执行的代码块");
}
else
{
Console.WriteLine("这是当bo2为truebo3为false的时候执行的代码块");
}
}
else
{
Console.WriteLine("这是当bo2、bo3为false的时候执行的代码块");
}
2)、switch语句
switch语句用于根据一个表达式的值,执行与之匹配的代码块。它的一般语法结构如下:
switch (exp)
{
case value1:
// 当表达式的值等于value1时执行的代码块
break;
case value2:
// 当表达式的值等于value2时执行的代码块
break;
// 可以添加更多的case
default:
// 当表达式的值与前面的所有值都不匹配时执行的代码块
break;
}
2、循环语句
循环语句是指在一定条件下,重复执行一组语句。C#提供了4种循环语句:while、do...while,for和foreach。
1)、while语句:当条件表达式exp为真时,则执行循环体语句
while (exp) //条件表达式
{
//循环体语句
}
示例:求1~10之间的和
int sum = 0;
int i = 1;
while (i <= 10) //条件表达式
{
sum += i; //循环体
i++;
}
Console.WriteLine(sum);
Console.ReadKey();
2)、do...while语句:先执行循环体,再判断条件表达式。如果条件为真(true),则继续执行循环体。while和do-while语句很相似,他们的区别在于while语句的循环体有可能一次也不执行,而do-while语句的循环体至少执行一次
do
{
//循环体语句
}while(exp) //条件表达式exp
示例:求1~10之间的和
int sum1 = 0;
int j = 10;
do
{
sum1 += j; //循环体
j--;
} while (j > 0); //条件表达式
Console.WriteLine(sum1);
Console.ReadKey();
3)、for语句:
//语法格式
for (int i = 0; i < length; i++) //i是初值,length作为控制条件,i++ 控制变量的增值
{
//循环体
}
示例:求1~10之间的和
int sum2 = 0;
for (int k = 1; k <= 10; k++)
{
sum2 += k; //循环体语句
}
Console.WriteLine(sum2);
Console.ReadKey();
4)、foreach语句:
foreach (var item in collection) //var是数据类型、item迭代变量、collection是被遍历数组
{
//循环体语句
}
示例:遍历数组
int[] fibarray = new int[] { 0, 1, 2, 4, 7, 9, 11, 15 }; //定义一个数组
foreach (int item in fibarray)
{
Console.WriteLine(item ); //遍历数组,并把元素输出
}
Console.ReadKey();
3、数组
C# 数组是一种非常常用的数据结构。数组的长度固定,由连续的内存单元组成,每个内存单元存储一个元素。当需要存储多个相同类型的元素时,就可以使用数组存储。
1)、数组定义格式:
// elementType[] arrayName;
// elementType 是数组中元素的类型,arrayName 是数组的名称
int[] myArray;
2、数组的初始化:包括静态初始化和动态初始化
静态初始话:指定数组元素的初始值和数组长度(也可以不指定,编译器会自动统计元素的个数。)
// elementType[] arrayName = { value1, value2, value3, ... };
int[] myArray = { 1, 2, 3, 4, 5 };
int[5] myArray2 = { 1, 2, 3, 4, 5 };
动态初始化:指定数组的长度,然后为每个元素分配空间
// elementType[] arrayName = new elementType[length];
int[] myArray = new int[5];
3)、数组元素的访问:通过下标访问,和c++一样,下标从0开始,到元素个数减一
int[] array = new[] {7, 4, 8, 9}
int value = array[3] + array[2]; //17
array[2] = 34; //{7, 4, 34, 9}
4)、数组的遍历
//计算数组元素的和
int[] array = new[] { 8, 11, 5, 9 };
int sum = 0;
for (int i = 0; i < 4; i++)
{
sum += array[i]; //访问 array[i] 进行操作
}
Console.WriteLine(sum); //遍历数组,并把元素输出
//计算数组元素的和
int sum2 = 0;
foreach (int element in array)
{
sum2 += element; // 对 element 进行操作
}
Console.WriteLine(sum2); //遍历数组,并把元素输出
Console.ReadKey();
5)、数组的常用方法
方法 | 说明 |
Array.Sort(arrayName) | 对数组进行排序 |
Array.Reverse(arrayName) | 反转数组元素的顺序 |
Array.IndexOf(array, value); | 返回指定值在数组中的索引。 |
Array.Copy(sourceArray, destinationArray, length); | 将一个数组的元素复制到另一个数组中。 |
array.Length; | 获取数组的长度。 |
array.Rank; | 获取数组的维度数。 |
示例:
int[] array = new[] { 67, 25, 46, 17 };
int[] array2 = new int[4];
Array.Sort(array); //数组排序
foreach (int element in array)
{
Console.Write(element); //遍历数组,并把元素输出 输出结果:17 25 46 67
Console.Write(" ");
}
Console.Write("\n");
Array.Reverse(array); //反转数组
foreach (int element in array)
{
Console.Write(element); //遍历数组,并把元素输出 输出结果:67 46 25 17
Console.Write(" ");
}
Console.Write("\n");
int index = Array.IndexOf(array, 25); //获取数组指定值的下标
Console.Write(index); //输出结果:2
Console.Write("\n");
Array.Copy(array, array2, 4); //把一个数组复制到另一个数组
foreach (int element in array2)
{
Console.Write(element); //遍历数组,并把元素输出 输出结果:67 46 25 17
Console.Write(" ");
}
Console.Write("\n");
int length = array.Length; //获取数组长度
Console.WriteLine(length); //输出结果:4
int rank = array.Rank; //获取数组维度
Console.WriteLine(rank); //输出结果:1
Console.ReadKey();