第二阶段_第三小节_C#基础
第二小节
-
本节用到的方法举例
自学API方法
//自学API的步骤:
//1.看名字猜功能
//2.看方法描述信息
//3.看参数(类型、名称、描述信息)
//4.看返回值(类型、描述信息)
//5.测试去吧
-
字符串拼接
" "+变量+" "
Console.WriteLine("当前枪为:" + gunType + ",攻击力是:" + atk);
Format
string result = string.Format(" 格式 " , 变量 );
Random
Random random = new Random();
int str = random.Next(1,101);
indexof
int a = str.IndexOf('你');//查找字符索引的功能。
substring
string newString = str.Substring(3);//截取子字符串的功能。
Insert
string str01 = str.Insert(1, "特");//在第几位插入什么字符串。
Remove
string str02 = str.Remove(2);//删除第几个字符以及后面的字符
Replac
string str03 = str.Replace('我', '你');//替换所有"我"为"你"。
常用符号知识点
占位符
形式:占位符 {位置的编号}
例子:string result = string.Format("当前枪为:{0}, gunType);
标准数字格式化字符串
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);
转义符
形式:改变字符的原始含义 \" \' \0 \t \\
例子:
c1 = '\0';//空字符
string s = "";//空字符串
Console.WriteLine("你\t好");//水平制表格 tab键
Console.WriteLine("你\r\n好");//回车换行
运算符
算数运算符+ - * / %取模(余数)
参与运算符的数据为float,结果为float
string r2 = str01 + str02 字符串拼接,没有数学运算
//作用:
//1. 一个整数能否被另外一个数整除
//num01 是否为偶数 true/false
bool r6 = num01 % 2 == 0;
//2. 获取个位
//num01 的个位数是?
int r7 = num01 % 10;
快捷运算符+= -= *= /= %=
num05 += 1;//【累加】 num05 = num05 +1
比较运算符
形式:<= >= == ….
例子:bool re9 = str01 == str02;
逻辑运算符
形式:与&& 或|| 非!
例子:bool r10 = true && true;//真 与 真 结果:真
实际例子:
如果到了最左边 && 还想向左移动 || 到了最右边 && 还想向右移动
停
一元运算符
- 无论++在前还是在后,对于下一条指令,都是自增1之后的结果。
-
对于当前指令:
++在后,则后自增,先返回结果
++在前,则先自增,后返回结果
例子: int num08 = 1;
int t1 = num08++;//赋值 自增
Console.WriteLine(t1);//1
int num09 = 1;
int t2 = ++num09;//自增 赋值
Console.WriteLine(t2);//2
三元运算符
定义:有选择性赋值的运算符
形式: 条件 ? 满足条件的结果 : 不满足条件的结果
例子:string r13 = true ? "ok" : "no";
错误例子:int r14 = str01 == str02 ? "a" : 20; //结果类型必须兼容
数据类型转换
Parse转换:字符串转换为其他类型
注意:字符串如果不是该类型的字符串表达形式(字符串长得不像需要转换的类型),则抛异常
例子:int intAtk = int.Parse("100");
ToString转换:任意类型转换为字符串类型
例子:string strAtk = intAtk.ToString();
隐式转换:小范围到大范围的 自动类型转换
例子:byte b1 = 200;
int i1 = b1;
显式转换:大范围到小范围的 强制类型转换
注意:可能造成精度的丢失
int i2 = 800;
byte b2 = (byte)i2;//32
//备注:通常发生在数值间
多种类型参与的运算,会产生类型自动提升
例子: 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);
-
语句
选择语句
If-else
如果具有多个条件,请将耗时的计算放置最后
Else-if
Switch
短路逻辑
如果具有多个条件,请将耗时的计算放置最后
例子:
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]
循环语句
For循环
形式:
for(初始值;循环条件;增减变量)
{
循环体
}
1-100和
1-100偶数和
While循环
形式:while(条件)
{
循环体
}
球弹起
do while循环
形式:
do
{
*
}while(条件);
猜数字
Do while 和 while区别
while(条件); 当满足条件 再做
与while区别:do while先执行循环体,再判断条件
复习
While复习
输入月份输出天数
对折纸张
小球弹起需求练习
跳转语句
Break 跳出循环;
方法
语法
//定义方法:做一个功能
//返回值:方法定义者 告诉 方法调用者 的结果
//类型:数据类型
//void:没有返回值
注意
return;//退出方法
//参数:方法调用者 告诉 方法定义者的信息
//形参:没有真实数据,形式上模拟的信息
//定义方法的原则:方法体要尽可能小,小到独立完成一个事情。 [单一职责]
//两个整数相加的功能
原则
方法例题
答案:
API学习方法
-
综合练习
月历输出
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);
}
}
-
笔试题
短路逻辑
短(断)路逻辑
&&短路与
if(耗时的条件算法放后面)
。。。
&与
|或
Continue简化代码结构,