第二阶段_第三小节_C#基础

来源:互联网 发布:数据分析 量化交易 编辑:程序博客网 时间:2024/05/22 05:08

 

 

第二小节

 

 

  1. 本节用到的方法举例

    1. 自学API方法

 

//自学API的步骤:

//1.看名字猜功能

//2.看方法描述信息

//3.看参数(类型、名称、描述信息)

//4.看返回值(类型、描述信息)

//5.测试去吧

 

  1. 字符串拼接

    1. " "+变量+" "

Console.WriteLine("当前枪为:" + gunType + ",攻击力是:" + atk);

 

  1. Format

string result = string.Format(" 格式 " , 变量 );

 

  1. Random

Random random = new Random();

int str = random.Next(1,101);

 

  1. indexof

int a = str.IndexOf('你');//查找字符索引的功能。

 

  1. substring

string newString = str.Substring(3);//截取子字符串的功能。

 

  1. Insert

string str01 = str.Insert(1, "特");//在第几位插入什么字符串。

 

  1. Remove

string str02 = str.Remove(2);//删除第几个字符以及后面的字符

 

  1. Replac

string str03 = str.Replace('我', '你');//替换所有"我"为"你"。

 

  1. 常用符号知识点

 

  1. 占位符

形式:占位符 {位置的编号}

例子:string result = string.Format("当前枪为:{0}, gunType);

  1. 标准数字格式化字符串

 

Console.WriteLine("{0:c}", 10);//¥10.00 以货币格式显示

Console.WriteLine("{0:f1}", 1.26);//1.3 保留指定精度的小数位(四舍五入)

//2:0 --》 1:59 --》 1:2 //02:00 --》 01:59 --》 01:02

Console.WriteLine("{0:d2}", 5);//05 保留指定位数,不足在前使用0填充

Console.WriteLine("{0:p1}", 0.123);

 

  1. 转义符

形式:改变字符的原始含义 \" \' \0 \t \\

例子:

c1 = '\0';//空字符

string s = "";//空字符串

Console.WriteLine("你\t好");//水平制表格 tab键

Console.WriteLine("你\r\n好");//回车换行

 

  1. 运算符

 

  1. 算数运算符+ - * / %取模(余数)

参与运算符的数据为float,结果为float

string r2 = str01 + str02 字符串拼接,没有数学运算

 

//作用:

//1. 一个整数能否被另外一个数整除

//num01 是否为偶数 true/false

bool r6 = num01 % 2 == 0;

//2. 获取个位

//num01 的个位数是?

int r7 = num01 % 10;

 

 

  1. 快捷运算符+= -= *= /= %=

 

num05 += 1;//【累加】 num05 = num05 +1

 

 

  1. 比较运算符

形式:<= >= == ….

例子:bool re9 = str01 == str02;

 

  1. 逻辑运算符

形式:与&& 或|| 非!

例子:bool r10 = true && true;//真 与 真 结果:真

实际例子:

如果到了最左边 && 还想向左移动 || 到了最右边 && 还想向右移动

 

  1. 一元运算符

 

  1. 无论++在前还是在后,对于下一条指令,都是自增1之后的结果。
  2. 对于当前指令:

    ++在后,则后自增,先返回结果

    ++在前,则先自增,后返回结果

 

例子:         int num08 = 1;

int t1 = num08++;//赋值 自增

Console.WriteLine(t1);//1

int num09 = 1;

int t2 = ++num09;//自增 赋值

Console.WriteLine(t2);//2

 

  1. 三元运算符

定义:有选择性赋值的运算符

形式: 条件 ? 满足条件的结果 : 不满足条件的结果

例子:string r13 = true ? "ok" : "no";

错误例子:int r14 = str01 == str02 ? "a" : 20; //结果类型必须兼容

 

 

  1. 数据类型转换

 

  1. Parse转换:字符串转换为其他类型

注意:字符串如果不是该类型的字符串表达形式(字符串长得不像需要转换的类型),则抛异常

例子:int intAtk = int.Parse("100");

 

  1. ToString转换:任意类型转换为字符串类型

例子:string strAtk = intAtk.ToString();

 

  1. 隐式转换:小范围到大范围的 自动类型转换

例子:byte b1 = 200;

int i1 = b1;

 

  1. 显式转换:大范围到小范围的 强制类型转换

注意:可能造成精度的丢失

int i2 = 800;

byte b2 = (byte)i2;//32

//备注:通常发生在数值间

  1. 多种类型参与的运算,会产生类型自动提升

例子: byte num01 = 200;//1.1

byte num02 = 100;//5 6.1

byte re = (byte)(num01 + num02);

//int re = num01 + num02;

 

int num03 = 1;

num03 += 1;

num03 = num03 + 1;

 

byte num04 = 10;

num04 += 255;//快捷运算符 没有类型提升

num04 = (byte)(num04 + 1);

 

  1. 语句

    1. 选择语句

 

  1. If-else

如果具有多个条件,请将耗时的计算放置最后

 

  1. Else-if

  1. Switch

 

 

 

 

 

 

 

 

 

 

 

  1. 短路逻辑

如果具有多个条件,请将耗时的计算放置最后

例子:

int n1 = 1, n2 = 2;

// false && ?

bool r1 = n1 > n2 && n1++ > 0;

Console.WriteLine(n1);// [1]

 

// true || ?

bool r2 = n1 < n2 || n2++ > 0;

Console.WriteLine(n2);// [2]

 

 

  1. 循环语句

 

  1. For循环

形式:

for(初始值;循环条件;增减变量)

{

循环体

}

 

  1. 1-100和

 

  1. 1-100偶数和

 

 

  1. While循环

 

形式:while(条件)

{

循环体

}

 

 

  1. 球弹起

 

 

  1. do while循环

 

形式:

do

{

*

}while(条件);

 

 

  1. 猜数字

 

 

 

  1. Do while 和 while区别

while(条件); 当满足条件 再做

与while区别:do while先执行循环体,再判断条件

 

 

 

  1. 复习

 

 

 

 

  1. If复习

  2. For复习

 

  1. While复习

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 输入月份输出天数

  1. 对折纸张

  1. 小球弹起需求练习

 

 

 

 

 

  1. 跳转语句

 

 

Break 跳出循环;

 

 

 

 

 

 

 

 

 

 

  1. 方法

 

  1. 语法

//定义方法:做一个功能

//返回值:方法定义者 告诉 方法调用者 的结果

//类型:数据类型

//void:没有返回值

 

 

 

 

 

 

 

  1. 注意

 

return;//退出方法

//参数:方法调用者 告诉 方法定义者的信息

//形参:没有真实数据,形式上模拟的信息

 

//定义方法的原则:方法体要尽可能小,小到独立完成一个事情。 [单一职责]

//两个整数相加的功能

 

  1. 原则

 

 

  1. 方法例题

 

 

 

答案:

 

 

  1. API学习方法

 

 

 

  1. 综合练习

    1. 月历输出

 

private static int CalculateWeekByDay(int year, int month, int day)

{

DateTime dt = new DateTime(year,month,day);

return (int)dt.DayOfWeek;

}

 

private static bool IsLeapYear(int year)

{

//if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)

// return true;

//else

// return false;

return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;

}

 

private static int GetDaysByMonth(int year, int month)

{

if (month < 1 || month > 12) return 0;//退出方法 返回数据

 

switch (month)

{

case 2:

//if (IsLeapYear(year))

// return 29;

//else

// return 28;

return IsLeapYear(year) ? 29 : 28;

case 4:

case 6:

case 9:

case 11:

return 30;

default:

return 31;

}

}

 

private static void PrintMonthCalendar(int year,int month)

{

//(1)显示表头

Console.WriteLine("{0}年{1}月",year,month);

Console.WriteLine("日\t一\t二\t三\t四\t五\t六");

 

//(2)根据1号星期数显示空白(\t)

int week = CalculateWeekByDay(year, month, 1);//3

for (int i = 0; i < week; i++)

Console.Write("\t");

 

//(3)计算当月天数

int days = GetDaysByMonth(year, month);//30

for (int i = 1; i <= days; i++)

{

Console.Write(i + "\t");

//(4)每逢周六换行

if (CalculateWeekByDay(year, month, i) == 6)

Console.WriteLine();

}

}

 

private static void PrintYearCalendar(int year)

{

for (int i = 1; i <= 12; i++)

{

PrintMonthCalendar(year, i);

Console.WriteLine();

}

}

 

static void Main()

{

Console.WriteLine("请输入年份:");

int year = int.Parse(Console.ReadLine());

PrintYearCalendar(year);

}

}

 

 

 

  1. 笔试题

    1. 短路逻辑

短(断)路逻辑

如果具有多个条件,请将耗时的计算放置最后

&&短路与

||短路或

if(耗时的条件算法放后面)

。。。

&

|

 

Continue简化代码结构,