C#学习笔记 面试提要
冒泡
for (int m = 0; m
{
for (int n = 0; n
{
if (arr[n] > arr[n+1])
{
int temp = arr[n];
arr[n] = arr[n + 1];
arr[n+1] = temp;
}
}
}
选择
for (int m = 0; m
{
int index = 0;
for (int n = 1; n
{
if (arr[index]
{
index = n;
}
}
if (index != arr.Length - 1 - m)
{
int temp = arr[index];
arr[index] = arr[arr.Length - 1 - m];
arr[arr.Length - 1 - m] = temp;
}
}
委托是函数的容器
是用来传递函数的方法
Action是可以传n个参数的委托 1-16个参数
Func是可以穿n个参数 并且有返回值的委托 1-16个参数
命名空间 工具包
类 工具
函数 工具能做的事情
#region 折叠代码
#endregion
有符号的整形变量 能存储一定范围内的正负数 包括0的变量类型
sbyte -128 - 127 占一个字节 0000 0000 标粉的那一位 是符号位 所以 能表示正负
short -32768 - 32768 占两个字节
int -21亿 - 21亿 占四个字节
long -9百万兆 - 9百万兆 占八个字节
无符号的整型变量 一定范围内 0和正数的变量类型
byte 0- 255 占一个字节
ushort 0- 65535 占两个字节
uint 0- 42亿 占四个字节
ulong 0 - 18百万兆 占八个字节
浮点数 小数
float 存储7/8位 有效数字 根据编译器的不同可能不一样 占四个字节
float = 0.1234567f
加f是因为c#默认的小数是double
有效数字 是从左到右 从非0数开始算有效数字
double
double 存储15-17位 有效数字 根据编译器的不同可能不一样 占八个字节
decimal 存储27-28位 有效数字 根据编译器的不同可能不一样 占十六个字节
decimal = 0.1231321321321321m;
特殊类型
bool 占一个字节
char 用来存储单个字符的变量类型 占二个字节
char c = 'a';
char c = '然';可以中文一个字符
string 用来存储多个字符 没有上限 长度可变
string s = “string”;
1byte = 8bit 1byte = 0000 0000 8个数 就叫8位 一个字节
1kb = 1024 byte
1mb = 1024kb
1gb = 1024mb
1tb = 1024gb
通过sizeof 可以知道变量类型所占的空间 单位 字节
常量必须初始化
常量不能被修改
const
string s = @“\\\\” 取消转义字符
值类型 数字类型 默认值 是0 bool 默认值是 false
引用类型 的默认值是null
隐式转换 大范围装小范围
decimal 不能隐式转换
无符号不能装有符号 有符号不能隐式转换为无符号
有符号能装无符号的 范围要在有符号的范围内
浮点数能装任何类型的整数 很大的数会转成科学计数法
char可以隐式转换为整型 其实是转为int 然后int可以转为其他int可转的 对于short byte等小的范围 无法表现为隐式转换
double -》 float -》整形(有符号 无符号)-》char
decimal -》 整形(有符号 无符号)-》char
显式转换
高精度转低精度 括号强制转换 可能会出现范围问题
浮点数会丢失精度
浮点强转整形时 会直接抛弃小数
parse法 将字符串类型转成对应的类型 字符串必须转换成对应的类型
int I = int.parse("asdf");
Convert法 更准确的将各个类型进行转换 填写的变量要正确 会四舍五入
int I = Convert.ToInt("123123");
toint16 是转为short touint 是ushort
toint32 是转为int 同上
toint64 是转为long 同上
float是tosingle
double是todouble
decimal todecimal
还有 变量类型.ToString();
进行字符串拼接时+++ 自动调用了tostring
异常捕获
try
{
//希望进行异常捕获的代码
}catch (Exception ex) {
//如果出错 则会执行catch的代码
}finally {
//不论有没有出现异常 都会执行的代码
}
默认的整数是 int 如果要得数是小数 则在运算时 要有浮点数的特征 f/m
乘除取余 高于加减 算术运算符的优先级
调换 交换
int a2 = 99;
int b2 = 87;
a2 = a2 + b2;//a2 = 99 + 87
b2 = a2 - b2;//b2 = 99 + 87 - 87
a2 = a2 - b2;//a2 = 99 + 87 - 99
//99999秒转为 多少天多少时多少分钟多少秒来显示
int daySec = 60 * 60 * 24;
int hourSec = 60 * 60;
int minSec = 60;
int day = 99999 / daySec;//int会抛弃除不尽的小数 正好除不尽的小数是不足一天的秒数
int hour = 99999 % daySec /hourSec;//取余出来的余数 就是不足一天的秒数 用来除hoursec 正好就是几个小时 同时int会抛弃除不尽的小数
int min = 99999 % hourSec /minSec;//同上 取余就是不足一小时的秒数 再除于minSec 正好是几分钟
int sec = 99999 % minSec;
字符串拼接
直接用+号拼接 注意的是
string s = “”+1+2+3+4
输出1234
string s =1+2+3+4
输出 10
string s = "1";
s += 1 + 2 + 3 + 4;
输出
110
string.format({0},{1},{2},1,2,3)后面的东西可以是任意的变量类型 占位符
console.writeLine({0},{1},{2},1,2,3) 也一样可以用占位符
条件运算符 优先级低于算数运算符
逻辑运算符<条件运算符<算数运算符<!
!>&&>||
逻辑运算符的短路规则
只要满足条件判断左边的内容 则右边的内容不重要
如逻辑与 有假则假 左边假 右边不用看
逻辑或 有真则真 左边真 右边不用看
位运算符
转为2进制后 对位运算
位与 类似逻辑与 有0则0
位或 类似逻辑或 有1则1
异或 相同为0不同为1
位取反 0变1 1变0
左移 向左移几位就在右侧补几个0
右移 向右移几位 就删最右侧几个数
异或加密
位运算与buff
三目运算符
int year = int.Parse(Console.ReadLine());
//年份能被400整除 或
//年份能被4整除但不能被100整除
Console.WriteLine(year % 400 ==0 || year % 4 == 0 && year % 100!=0 ? "闰年" :"平年");
switch
贯穿
int num = int.Parse(Console.ReadKey().KeyChar.ToString());//获取输入的一个字符 转为string之后 再转为int
//如果直接获得char 是直接获取ascii码所以要转成string
斐波那契数列
int index = 0;
int result = 0;
int n1 = 1;
int n2 = 1;
while (index
{
index++;
if (index == 1)
{
result = n1;
}
else if (index == 2)
{
result = n2;
}
else
{
result = n1 + n2;
//这里要注意的是 把n1 n2 后移了
n1 = n2;
n2 = result;
}
}
Console.WriteLine(result);
//1-100的素数
int num = 2;
while (num
{
int i = 2;
while (i
{
if (num % i ==0)
{
//不是素数
break;
}
i++;
}
if (i == num)
{
//是素数
Console.WriteLine("{0}是素数", num);
}
num++;
}
static bool IsPrime(int num)
{
for (int i = 2; i
{
if (num % i == 0) {
return false;
}
}
return true;
}
//水仙花数
for (int i = 100; i
{
int hundred = i / 100;
int ten = i % 100 /10;
int ge = i % 10;
if (hundred * hundred * hundred + ten* ten * ten + ge * ge * ge == i)
{
Console.WriteLine(i);
}
}
//九九乘法表
for (int i = 1; i
还没有评论,来说两句吧...