c#从零开始学习笔记---第六天
ok啊,大家好,今天在搬家,博客更新的稍微有点晚了,不过还好今天的东西不多,话不多说,我们来看看今天来记录点什么吧!
1.C#中的一些常见方法
虽然我们现在还没系统的学习类以及类的方法,但我们可以提前了解一些c#中的一些常见的方法,这些都是系统里自带的,平时我们在编写程序的时候都是可以直接调用的。
1.1 Math类的方法
Math一般提供一些关于数学方面的函数,使用Math函数一般都是通过Math.函数名,原因是函数static静态函数,静态函数使用的时候通过类名.函数进行使用。
1.1.1 abs():求绝对值
//1 abs0求绝对值
Console. WriteLine (Math. Abs (-10));
大家肯定对求绝对值这件事不陌生,我就不再多说的,就是把一个负数变成一个正数,结果我也不展示了,大家自己跑一下。
1.1.2 Floor():向下取整
//2Floor) 向下求整
Console. WriteLine (Math. Floor (2.3));
Console. WriteLine (Math. Floor (2.7));
向下取整,顾名思义,就是向下面的,小于取整数的最大的正数取整,这个符号不考虑四舍五入,说白了不管是大于五的还是小于五的都舍去。我们来看一下具体的结果:

不难看出,不管是2.3还是2.7,我们使用向下取整之后最后的结果都为2。
1.1.3 Ceiling(): 向上取整
//3 Ceiling(2.3)向上求整
Console. WriteLine (Math. Ceiling (2.3));//3
Console. WriteLine (Math. Ceiling (2.9));//3
向上取整,完全就是跟向下取整反过来的,这里就不再多做解释了,直接看结果:

1.1.4 Round():四舍六入,五取偶数
//4.Round(四舍六入五取偶数
Console. WriteLine (Math. Round (3.5));//4
Console.WriteLine(Math.Round(2.5));//2 小数点后面是5的话取离他最近的偶数
Console.WriteLine(Math.Round(1.235m,2)); //后面的参数2表示保留两位小数
Console.WriteLine(Math.Round(1.225m, 2));
我们都知道四舍五入,那这个四舍六入五取偶数是啥意思呢?四舍就跟以前一样,小于等于四的数我们就舍去,六入就是大于等于六的我们就进一位,那五取偶数的意思就是,比如3.5介于3和4之间,那4是偶数,我们在这个算法里就取4,再比如2.5介于2和3之间,我们就在这个算法里就取2,因为2是偶数,这个我们也能用于小数点后面的值,我们来看上面例子的结果:

至于括号里为啥要用1.235m,1.225m?大家先回忆一下,我们在之前学习变量类型的时候学到过一个decimal,当时我跟大家说的是这个变量类型一般用于金钱这种比较敏感的数值,必须是确定值这种,在这里在解释一下,正常的浮点数(用float和double类型存储的)比如1.235,他在计算机里的存储可能就不是1.235,可能是1.2356478....之类的,后面还有很多位,存在偏差。而用decimal这种类型,1.235就是1.235,是不会存在偏差,所以这种就会在这个Round()函数里起作用,大家感兴趣的可以把m去掉,看看值是多少。
1.1.5 指定的舍去数据
//5.指定舍去数据
//参数1:数据
//参数2:如果是小数的话保留的小数位数
//参数3:舍去还是进位的规则,如:MidpointRounding.AwayFromZero(正常的四舍五入),MidpointRounding.ToEven(取最近的偶数)
Console.WriteLine(Math.Round(1.225,2,MidpointRounding.AwayFromZero));
在c#中,我们就算调用了上述的一些函数,也还可以通过一些指定的指令来实现我们需要的数据的舍弃方式。

想上述的那句代码,我们明明用的四舍六入五取偶数,但最后输出的值还是正常的四舍五入。
1.1.6 Math的其他一些属性
//6.Math的属性
Console.WriteLine(Math.PI); //圆周率
Console.WriteLine(Math.Pow(2,3)); //第一个数的第二个数次方
Console.WriteLine(Math.Sqrt(9)); //进行开方运算
Console.WriteLine(Math.Max(2,3));//求两者最大值
Console.WriteLine(Math.Min(2,3));//求二者最小值
Console.WriteLine(Math.Sin(Math.PI/6));//正弦函数
Console.WriteLine(Math.Cos(Math.PI / 6));//余弦函数
当然Math类的属性还有很多,我这里也没有列全,不过这些都是我们平时可能会遇到和使用到的,大家感兴趣了也可以自己再去搜搜总结总结一些Math的一些其他的属性。
1.2 goto语句
goto语句就是在我们需要重复执行的代码前面添加一个标记,在后面需要重复执行了,只需要使用goto加上标记即可。我们来看一个例子:
//eg:请求用户输入自己的性别
inputSex:
Console.Write("请输入您的性别:");
string str= Console.ReadLine();
if (str == "男")
{
Console.WriteLine("您的性别是:男");
}
else if(str == "女")
{
Console.WriteLine("您的性别是:女");
}
else
{
Console.WriteLine("您的输入不合法,请重新输入!");
goto inputSex; //去重复执行inputSex
}
上面我们也说了,要在goto语句之前加一个标记,在这个代码里,inputSex就是这个标记。需要注意的是这种标记在定义的时候也是需要遵循小驼峰命名法则的,定义标签的时候要定义在代码的前一行。我们来看看运行结果:

1.3 可空类型(空==“null”)
可空类型不难理解,就是能给他赋值为空的类型,我们之前记录过值类型和引用类型,其中值类型只能表示数字,不能表示null,而引用类型可以表示null,如果大家忘记什么是引用类型,什么是值类型可以再去翻翻我之前的帖子,写的还是蛮清晰的。我们直接看例子吧:
string s1 = null;
// int a = null ; 这种赋值就不对
//如果想让值类型除了能表示正常范围的数据还能表示null ,可以使用数据类型?变量=null;
int?c= null;
c = 518;//这样c的取值范围就从所有的实整数变成了还有空值,但不能让别的int类型等于c,这样范围就不一样,就不合法了
//int d=c; 这样就不对
//当然,也可以用??来进行赋值给整形变量
//这样赋值就可以把含null的类型转成不包含null的类型的数据
int d = c ?? 10; //如果c为null,d就取??后面的数据,如果c不为null,d就取c的值
Console.WriteLine(d);
2.双重for循环
2.1 双重for循环介绍
ok啊,接下来来看看我们的老朋友,for循环。不过这次算是他的双胞胎兄弟,双重for循环。双重for循环指的是在一个for循环内部再嵌套另一个for循环。外层循环每执行一次,内层循环会完整地执行一遍。这种结构常用于处理需要逐行或逐列操作的数据。举个生活中的比喻:想象你在清点一个书架上的书。书架有3层(外层循环),每层有5本书(内层循环)。你需要先拿起第一层,然后依次清点这一层的5本书;接着拿起第二层,再清点这一层的5本书;最后处理第三层。这就是双重循环的逻辑:外层控制“层数”,内层控制“每层的书”。接下来我们来看个例子:
//双重for循环:执行顺序和单层循环执行的顺序是一样的,
//双重 for 循环就是外层循环走一步,内层循环走全部,先把内层循环完整执行完,再回到外层循环执行下一次。
//例子:
for (int i = 0; i < 3; i++)
{
Console.WriteLine($"i的值为{i}");
for (int j = 0; j < 3; j++)
{
Console.WriteLine($"此时i对应的j的值为:{j}");
}
}
我们来看一下这个例子的结果:

不难看出,在i=0的时候,我们进入第一重for循环,打印了i的值以及此时进入第二重for循环时j 的值。说白了双重 for 循环就是外层循环走一步,内层循环走全部,先把内层循环完整执行完,再回到外层循环执行下一次。
2.2双重for循环里的break和continue的使用
break和continue也都是我们的老朋友了,他们的作用我们这里就不再说了,直接上个例子来看看吧!
for (int a = 0; a < 3; a++)
{
for (int b = 0; b < 3; b++)
{
if (a == 1)
{
break;
}
if (b == 1)
{
continue;
}
Console.WriteLine($"a的值为{a},b的值为{b}");
}
}
我们直接来看他的运行结果:

不难发现,当a==1时,内层循环直接通过break终止,跳过当前a值的剩余内层循环迭代。当b==1时,内层循环通过continue跳过当前迭代,直接进入下一次b的循环。
2.3练习
ok啊,开头就说了,今天的内容不多,最后再给大家留两道练习,大家先自己做一下吧,至于答案的话,我会在明天的博客里展示,加油!!我们一起努力!!!
练习一:打印九九乘法表,具体效果如下:

练习二:打印对应的图形,图型样式如下:

ok,大家如果做练习的可以在评论区交作业哦,主播看到都会回复的,加油各位,我们明天见!
更多推荐
所有评论(0)