C#总结知识点
模块一:知识点梳理
输入输出表达式---数据类型---变量与常量 ----运算符---语句-----数组与集合---函数--结构体;
模块二:输入与输出
输入: console.resdline(); console.read();
输出: console.writeline() ; console.write();
模块三:数据类型
A 分类: 值类型 对象类型(引用类型)
1 值类型:
基本类型: int shart long double float decimal char bool
字符串的字面值:
\’ 表达为单引号 \’’ 双引号 \\ 反斜杠 \0 空格 \a 蜂鸣 \b退格 \f 换页 \n 换行 \r 回车 \t 水平制表符 \v垂直制表符
★技巧1 String a=@”www.baidu.\ddeg\\frfr\.com.“(@“包含特殊符号的要输出的语句”);
复杂类型 datetime类 math 类
Datetime:表达形式
Math:表达形式
2对象类型
String 类 表达形式
定义 字符串名字 str;
1) str.lenth(); //获取字符串长度; str.toupper/str.lower(); 将字符串全部调整为大写/小写; str.replace(要被替换的字符,要去替换的字符) 返回已经替换完成的字符串;
2) Str.trim() str.trimstar() str.trimend() 分别为去除字符串前后空格 去除字符串前空格 去除字符串后面空格
3)截取指定位置字符串:str.substring(起始位置int,截取长度int)返回值为字符串
string a="rfrrggfsggrrfgsfghggs";
string s = a.Substring(4, 4);
Console.Write(s);
4)str.indexof(); str.lastindexof();
例子 : string a="rfrrggfsggrrfgsfghggs";
int w = a.IndexOf("r");//某个字符串在这个字符串中第一次出现的位置
int e = a.LastIndexOf("r");//某个字符在这个字符串中最后一次出现的位置
Console.Write(w); //返回值为整数
Console.WriteLine(e);
5)bool 型(返回bool值 true or fause)
例 :string a="rfrrggfsggrrfgsfghggs";
bool w = a.EndsWith("g");//是否以 g结尾
bool e = a.StartsWith("f");//是否 以f 开头
bool t = a.Contains("e");//是否包含e
Console.Write(w);//返回值为ture 或者是fause
Console.WriteLine(t);
Console.WriteLine(e);
3 类型间的转换
数据转换:
计算机运算的时候,必须使用同一类型数据进行运算。
如果不是同一类型数据,则需要进行类型转换。
类型转换的分类:
1.自动转换:只要不会出现丢数据的可能,就自动转。
byte->short->int->long->float->double
2.强制转换:凡是可能会出现丢数据的情况,就需要强制转。
在被转换的数据左边加上小括号:(要被转换成的数据类型)
使用Convert.ToXXXX(要被转换的数据)
例子:
int d = (int)3.14;
int d = Convert.ToInt32( 3.14);
float f = (float)3.14;
float f = Convert.ToSingle(3.14);
如果是字符串转换基本数据的话必须使用Convert.ToXXX(字符串);
模块四 变量与常量
- 常量
Const +数据类型 +常量名 例 const PI ;注:变量名一般为全部大写;
B 变量
命名规则: a 变量名可以由 字母,数字 下划线, @,汉字 组成
b 变量名首字符 不能是数字;
c 变量名不能为关键字;
(一)变量——U盘
1.定义:
数据类型 变量名[=值[,变量名=值]];
变量名的命名规则:a.组成。b.首字符。c.关键词
2.赋值:变量名=值;
3.取值:直接使用变量名。
注意变量的作用域:变量只在它所在的花括号里面起作用,出了花括号就访问不到了。
1.在同一个花括号内,不能出两个重名的变量定义。
2.如果多重花括号,外层和里层都出现同一个变量的定义,则使用的时候遵循“就近原则”。
(二)常量——光盘
在程序只能定义的时候赋值,在运算的时候无法修改值(不能放在等号的左边)
1.定义:
const 数据类型 常量名 = 值; //一般来说常量名统统大写。
2.取值:直接使用常量名。
3.分类:符号常量和字面常量。
int a = 10; //10就是字面常量
const int PI = 3.14; //PI-符号常量;3.14字面常量
模块五 运算符
运算符:
一、算术运算:
+ - * / % ++ --
注意:
1.做除法运算的时候,如果两个操作数同为整数,则运算结果也是整数,不会出现小数。
2.上面这些运算,如果两个操作数不同是一类型,在运算的时候会自动进行类型转化。
取余用途有哪些?
1.判断能不能整除?
2.用来把数变成某个范围之内的数。
自增与自减操作:
语法:
变量名++; ++变量名;
int a = 4;
a++; ++a;
意义:
a++ ++a <==> a = a+1; <==> 1.把a的值取出来。2.把a的值加上1。3.把加完的结果再赋给a。
5++ 为什么不正确?
const int b = 5;
b++; 为什么不正确?
++a与a++的区别?
1.如果这一行语句中,只有唯一的++或--运算,不再有其它运算的话,前++后++效果是一样的。
2.如果这一行语句中,除了++ --外,还有其它运算。
前++,最先执行。后++,最后执行。
例如:
int a = 5;
int b;
b = a++; //相当于b = a; a = a+1;
Console.WriteLine(a); //a=6
Console.WriteLine(b); //b=5
b = ++a; //相当于a = a+1;b=a;
Console.WriteLine(a); //a=6
Console.WriteLine(b); //b=6
二、关系运算符:6个
== != > >= < <=
所有关系运算符,运算的结果都是bool型。
int a = 5;
int b = 6;
Console.WriteLine(a == b); //False
Console.WriteLine(a != b); //True
Console.WriteLine(a > b); //False
Console.WriteLine(a < b); //True
Console.WriteLine(a >= b); //False
Console.WriteLine(a <= b); //True
注意:不要把== 写成 =
三、逻辑运算符
&& || !
int a = 5;
int b = 6;
a>6 && b<=10 //结果是False
18<a<35 ==> a>18 && a<35
a<18 或 a>35 ==> a<18 || a>35
&&——只有两个条件都成立,结果才成立True;如有一个不成立,或者两个都不正确,结果就False
||——除非两个都不成立,结果才不成立False;只要有一个成立,结果就成立True。
!——取反运算。
int a = 16;
bool b = a>18 && a<35; //b == false
bool c = !(a>18 && a<35); //c == true
四、其它运算
= -- 赋值运算,把右侧的值赋给左侧。因此它的左侧只能是变量,不能是常量或表达式。
+= -= *= /= %= --- 复合运算符。
int a = 5;
a += 10; // <==> a = a+10; //1. 执行a+10。2.把相加的结果赋给a;
?: -- 条件运算符。
逻辑(关系)式?式子二:式子三;
int a = 10
int b = 5;
bool c = a>b?a:b;
模块六 语句(顺序 循环 分支)
五、语句:顺序、分支、循环
(一)分支:
1.if
(1)if(条件){}
(2)if(条件){} else {}
(3)if(条件){} else if(条件){}...else{}
(4)if(条件){if(条件){}..else{}} else{if(条件){}...else{}}
案例:
a.18岁抓当兵。
b.相亲
c.体重
d.平年闰年 ——判断一个日期是否正确。
e.一元二次方程根的情况。
2.switch
switch(表达式)
{
case 常量:
...
break;
case 常量:
...
break;
default
break;
}
(二)循环:
1.基本语法:
(1).for
for(初始条件;循环条件;状态改变)
{
循环体
}
循环的四要素:。。。。。。
(2).while
初始条件
while(循环条件)
{
循环体
状态改变
}
2.循环嵌套:
for(;;)
{
for(;;)
{
}
}
3.应用:
a.打印星号。好多图形。
b.穷举。把各种可能的情况都走一遍,筛选出符合条件的。
●100以内所有与7有关的数。
●买牙刷,洗发水,香皂
●百鸡百钱,百马百石
●兑硬币
●填+-号使等式成立的。
●侦察兵
************关与本文中的例题不明白可以加793059747 相互探讨一下************
c.迭代。找到规律,使用变量不断累计的功能实现运算。不断求中间结果,直到得出最终的结果。
●100以内所有数的和
●猴子吃桃
●小朋友算年龄
●折纸-珠峰
●棋盘分米
●富翁与程序员
●兔子
模块七 数组与集合
六、数组与集合
(一)数组:同一类型,连续存储
1.一维:——豆角
定义: 数据类型[] 数组名 = new 数据类型[长度]{初始值列表};
赋值:数组名[下标] = 值;
取值:数组名[下标]
与for语句配合用:——使用循环来控制下标。
数组常用的属性:Length。要搞清下标与长度的关系。
应用:
●球员打分。
●彩票
●排序
●二分法查找。
2.二维:——表格
定义:数据类型[,] 数组名 = new 数据类型[行数,列数]{初始值列表};
赋值:数组名[行下标,列下标] = 值。
取值:数组名[行下标,列下标]
与循环配合用:
for(;;) //循环行
{
for(;;)//循环列
{
}
}
应用:
●推箱子。
3.锯齿:——数组中的数组
定义:
1.定义数组中的数组:数据类型[][] 数组名 = new 数据类型[行数][];
2.定义一维数组:
3.把一维数组赋给数组的数组。
★★★★锯齿数组详解★★★★
.锯齿数组——数组的数组
定义:
a.定义数组的数组:
int[][] a = new int[3][];
b.定义一维数组:
int[] b1 = new int[4]{1,2,3,4};
int[] b2 = new int[3]{5,6,7};
int[] b3 = new int[5]{9,10,11,12,13};
c.把一维数组加到数组的数组中去
a[0] = b1;
a[1] = b2;
a[2] = b3;
使用:
a[行][列] = 。。。
a[行][列]
a.Length == ??? 3
a[0].Length = ????? 4
(二)集合:不用连续
1.链表
弱类型:ArrayList list = new ArrayList(); //using System.Collection;
强类型:List<类型> list = new List<类型>(); //using System.Collection.Generic;
2.哈希表
弱类型:Hashtable table = new Hashtable();
强类型:Dictionary<key类型,value类型> table = new Dictionary<key类型,value类型>();
栈,队
★★★★集合详解★★★★
集合:
(1)链表——每个存储的值都会分配一个索引号,通过索引号可对每个元素赋值或取值。
弱类型:
using System.Collection;
ArrayList list = new ArrayList();
强类型:
using System.Collection.Generic;
List<类型> list = new List<类型>();
list.Clear();
list.Add(value);
list.Insert(索引号,value);
list.RemoveAt(索引号);
list.Count;
(2)哈希表——每个元素都由两部分组成,一部分叫key,一部分叫value
弱类型:
using System.Collection;
Hashtable table = new Hashtable();
强类型:
using System.Collection.Generic;
Dictionary<类型,类型> dic = new Dictionary<类型,类型>();
dic.Clear();
dic.Add(key,value);
dic.Remove(key)
dic.Count;
模块 八 函数 结构体
个人理解 函数 与结构体只是为了美化已经完成的程序提高程序的利用率,或者是说为了提高工作效率完成的;
函数
函数 :结构与枚举:
(一)结构体——自己定义的复杂的类型。
什么是结构体?为什么需要用到结构体?
定义:
struct 结构体名
{
public 数据类型 成员变量名;
public 数据类型 成员变量名;
public 数据类型 成员变量名;
...
}
使用:
结构体名 变量 = new 结构体名();
变量.成员变量 = 值
变量.成员变量
说明:结构体的成员,还可以用其它结构体来定义。
(二)枚举:使用枚举来替代一些难以记忆的整数。
枚举和整数之间可以相互强制转换。
定义:
enum 枚举名
{
成员名[=整数],
成员名[=整数],
成员名[=整数],
....
成员名[=整数]
}
结构体:
★★★★结构体详解:★★★★
结构体:
由多种简单类型,组合成一种复杂的类型。使用这种复杂的类型来解决生活中的实际例子。
一、结构体定义:
struct 结构体的名子
{
public 类型名 变量名;
.....
}
struct Student
{
public string NO;
public string Name;
public double YuWen;
public double ShuXue;
public double WaiYu;
public double ZongFen;
}
二、结构体的使用:
1.使用结构体来定义变量
Student s1 = new Student();
2.给结构体变量赋值。
s1.Name = "";
s1.NO = "";
3.给结构体变量取值。
s2.YuWen
三、复杂结构体。
使用结构体类型的成员变量,来组成更大的结构体。
1.先造个小的结构体
2.使用小的结构体来组合成更大的结构体。
struct Student
{
public string NO;
public string Name;
public ChengJi Score = new ChengJi();
public LianXiFangShi Contact = new LianXiFangShi():
}
struct LianXiFangShi
{
public string DianHua;
public string QQ;
public string YouXiang;
public string ZhuZhi;
}
struct ChengJi
{
public double YuWen;
public double ShuXue;
public double WaiYu;
public double ZongFen;
}
复杂结构体的定义:
Student s1 = new Student();
复杂结构体成员变量的使用。
s1.NO = "s001";
s1.Name = "张三";
s1.Contact.DianHua="18500002222";
s1.Contact.QQ="88888888";
s1.Contact.YouXiang="88888888@qq.com";
s1.Contact.ZhuZhi = "地球";
s1.Score.YuWen=89;
s1.Score.ShuXue=99;
s1.Score.WaiYu=79;
s1.Score.ZongFen = s1.Score.YuWen+s1.Score.ShuXue+s1.Score.WaiYu;