运算符基础介绍
C#运算符包括:算数运算符、关系运算符、逻辑运算符
算数运算符
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
+= | 累加(a+=b等同于a=a+b) |
-= | 累减 (a-=b等同于a=a-b) |
*= | 累乘(a*=b等同于a=a*b) |
/= | 累除(a/=b等同于a=a/b) |
练习
取出 int a=123的每个数
int b,c,d;
b=a/100;
c=a/10%10;
d=a%10;
console.WriteLine(“b:{0}\nc:{1}\nd:{2}\n”,b,c,d);
关系运算符
运算符 | 描述 |
---|---|
> | 大于 |
< | 小于 |
== | 恒等于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
练习
求三个数中的最大值
int a=1,b=2,c=3;
int max =0;
max=(a>b)?a:b
max=(max>c)?max:c;
或
max=(a>b)?((a>c)?a:c):(b>c)?b:c;
逻辑运算符
与 ( &&)
都为真才为真,一方为假都为假
或 ( ||)
一方为真则为真
非 ( !)
原值的对立面
三元运算符
(表达式)?真值:假值
按位与或
|(按位或) &(按位与)
int a=5(101),b=3(011);
int c=a|b
int d=a&b
即011与101按位进行或运算 c=7;d=1
位移(移位)运算
int a=5;
int b=a>>2
int c=a<<2
即将a转换成二进制,然后进行向右移除两位,最前面补两个零,即b=1(001)
流程控制语句介绍
顺序结构、分支结构、循环结构
IF分支结构
- if语句
- if-else语句
- 多重if语句
if()
{}
else if()
{}
else if()
{}
else
{}
- 嵌套if语句
if ()
{
}
else
{
if ()
{ }
else if ()
{ }
else if ()
{ }
else
{ }
}
递归
/// <summary>
/// 递归计算--压栈计算
/// </summary>
public class Jiechen
{
public static int JIE(int a)
{
if (a == 1)
{
return 1;
}
else
{
return a * JIE(a-1);
}
}
}
static void Main(string[] args)
{
//递归函数使用
Console.WriteLine(Jiechen.JIE(5));
Console.ReadKey();
}
Switch分支结构
switch(条件)
{
case结果1;
break;//退出
case结果2;
break;//退出
case结果3;
break;//退出
}
//case-when语句
var input = Console.ReadLine();
int q=int.Parse(input.Trim());
switch (q)
{
case int a when a < 0:
Console.WriteLine("小于");
break;
case int a when a > 0:
Console.WriteLine("da于");
break;
case int a when a == 0:
Console.WriteLine("等于");
break;
default:
Console.WriteLine("???????");
break;
}
//switch表达式语句
var p=Console.ReadLine().Trim().ToLower();
string result = p switch
{
"1" => "第1名",
"2" => "第2名",
"3" => "第3名",
"4" => "第4名",
" " => "啥也不是"
};
Console.WriteLine(result);
for循环结构
在循环次数确定的情况下
for(变量初始化(只执行一次);表达式是否成立;声明变化)
{
代码块
}
举例
//统计1~100的奇数和
int sum = 0;
for (int i = 0; i <= 99; i+=2)
{
sum += i;
}
//水仙花数:abc=a*a*a+b*b*b+c*c*c
int a, b, c;
for (int i = 100; i < 999; i++)
{
c = i / 100;
b = i / 10 % 10;
a = i % 10;
if (a * a * a + b * b * b + c * c * c==i)
{
Console.WriteLine(i);
}
}
//鸡兔同笼100只脚,鸡兔各多少只
//穷举法
for (int ji = 0; ji < 50; ji++)
{
if ((100 - ji * 2) % 4 == 0)
{
int tu = (100 - ji * 2) / 4;
Console.WriteLine("鸡:{0}只,兔:{1}只",ji,tu);
}
}
//死循环--无限循环
for ( ; ; )
{
Console.WriteLine("hi");
}
算法举例
//冒泡算法
int[] arr = { 1, 7, 9, 8 };
for (int i = 0; i < arr.Length; i++)
{
for (int j = 0; j < arr.Length-1; j++)
{
if(arr[j]>arr[j+1])
{
int change = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = change;
}
}
}
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
//双循环
for (int row = 0; row < 4; row++)
{
for (int col = 0; col < 4; col++)
{
Console.Write("* ");
}
Console.WriteLine();
}
//九九乘法
for (int row = 1; row <= 9; row++)
{
for (int col = 1; col <= row; col++)
{
Console.Write(row+"*"+col+"="+row*col+" ");
}
Console.WriteLine();
}
break语句:结束循环
continue语句:终止本次循环,继续循环
return语句:退出所有循环
while与do- while循环结构
do- while至少执行一次
int i = 0;
int sum = 0;
while(i<=100)
{
sum += i;
i++;
}
int i = 0;
int sum = 0;
do
{
sum += i;
i++;
} while (i <= 100);