做网站的软件图标,重庆云阳网站建设公司推荐,软件工程属于什么专业类别,寻找赣州网站建设第二章 C# 语法基础
2-1 C# 中的关键字
关键字#xff0c;是一些被C#规定了用途的重要单词。
在Visual Studio的开发环境中#xff0c;关键字被标识为蓝色#xff0c;下图代码中#xff0c;用红方框圈出的单词就是关键字。
关键字 class #xff0c;这个关键字的用途是…第二章 C# 语法基础
2-1 C# 中的关键字
关键字是一些被C#规定了用途的重要单词。
在Visual Studio的开发环境中关键字被标识为蓝色下图代码中用红方框圈出的单词就是关键字。
关键字 class 这个关键字的用途是声明类。比如上面例子中类名叫做Program。
关键字 namespace 这个关键字的用途是声明“命名空间”。比如上面例子中命名空间叫做MyApp1。
关键字 using 这个关键字的用途是导入命名空间。比如这句**using** System.Text; 作用是导入System.Text命名空间中的类。
关键字 static (静态的)、 void (无返回值)、 string (字符串类型)。常常在Main()方法的声明中看到:**static** **void** Main(**string**[] args)
Main() 方法是 C# 中的特殊方法是程序的入口就是说如果没有 Main ()方法程序就无法启动。
注意你会发现所有关键字都是由小写字母组成的C#语言中大小写是严格区分的。
2-2 C#的注释
注释是代码中的一些“说明性文字”。注释本身不会参与程序的编译和运行仅仅供程序员阅读。
注释分为单行注释、多行注释、文档注释。
单行注释的符号是2条斜线请注意斜线的方向2条斜线右侧的内容就是注释左侧的代码不会受影响。
多行注释以“/”开始以“/”结束之间的内容就是注释可以包含多行。
文档注释写在类、方法或属性以后会学到的前面它的符号是3条斜线“///”。 2-3 C#常量
常量顾名思义就是“不会改变的量”。
我们平时书写的数字比如12.85、字符(比如’F’)、字符串(比如谢谢)它们都属于“字面常量”。
有一些常量既重要又容易出错比如圆周率π的值为3.1415926…所以我们常常会使用自定义常量。请看下面的代码 需要解释2个关键字 const 关键字表明PI是一个常量 double 关键字表明PI的类型为“双精度浮点型”一种精度很高的数字类型。
你会发现这段代码中使用了2次圆周率周长、面积但是因为使用自定义常量所以字面常量3.1415926只书写了一次。这样做避免了重复书写导致的错误。
还有一点要特别注意常量在声明时赋值之后是不能修改的。
2-4 C# 的变量
变量能够存储数据并且与常量不同变量存储的数据可以修改。比如今年18岁明年可以变成19岁。
使用变量分为3步声明、赋值、使用。
声明变量的语法**数据类型 变量名;**
给变量赋值的语法**变量名值;**
请阅读下面的代码
变量的声明和赋值可以同时完成上面代码Main()方法中的前两行可以改写为
int age18;//声明并赋值2-7 算法----交换
上次我们学习了变量。这次我们将了解怎样将2个变量的值交换。 交换2个变量的值就如同交换两只杯子中的饮料一杯满满的牛奶和一杯满满的咖啡怎样才能互换呢 变量的交换也如此。两个变量的交换也需要一只“空杯子”就是中间变量
tring a振刚;//第一个变量
string b文峰;//第二个变量
string temp;//中间变量
//第一步将变量a赋值给中间变量
tempa;//如同牛奶倒入空杯
//第二步将变量b赋值给变量a
ab;//如同咖啡倒入牛奶杯
//第三步将中间变量赋值给变量b
btemp;//如同空杯中的牛奶倒入咖啡杯
//此时交换完成变量a存储了“文峰”b存储了“振刚”上面三个步骤就能交换2个变量你学会了吗? 这种解决实际问题的步骤就叫做“算法”交换就是最常用的一种算法。
C# 2-9 C# 的数据类型
我们知道声明变量需要写出数据类型我们今天要学习的是最常用的几种类型。 字符类型 char 存储用 ‘’ (单引号)括起来的一个字符例如
char sex男;//存储性别字符串类型 string 存储用“”双引号括起来的一串字符例如
string address北京市宣武区牛街北口;//存储地址整数类型 int 存储整数例如
int age23;//存储年龄双精度浮点型 double 存储小数例如
double salary7991.63;//存储工资以上四种是最常用的数据类型其他常用类型我们会随着课程深入慢慢介绍。
需要注意的是某种类型的变量只能存储这种类型的数据否则可能会出错。
2-10 C# C# 的类型转换
上一节我们学习了4种数据类型也提到每种类型的变量只能存这种类型的数据。可是有时候真的需要把不同类型的值放在一起运算比如这种3.58 这时候怎么办呢有下面2种情况
自动类型转换2种不同类型的数据运算低精度类型会自动转换为较高精度的类型。 以3.58为例显然数字8的精度较低int而3.5的精度较高double所以8会自动转换为double型即转换为3.58.0进行运算结果为11.5。
请看这个例子**double** d2; 2的精度显然低于变量d的精度所以2会自动转换为2.0然后赋值给d。 再看这个例子**int** i3.0;变量i的精度低于3.0但是由于i已经声明为int型的变量变量的值可以变但变量的类型可不能变来变去的所以这条命令会出错的。
强制类型转换无法自动转换为我们需要的类型可以用强制类型转换比如上例可以这样完成
int i(int)3.0;数字前面的int表示转换的目标类型为int3.0会被强制转换为3。 需要注意 double 型强制转换为int型将失去小数部分比如(int)2.8我们得到的将是2。
2-11 C#标识符的命名规则
程序中的变量名、常量名、类名、方法名都叫做标识符。C#有一套标识符的命名规则如果命名时不遵守规则就会出错。这套规则简单说有下面三条
①标识符只能由英文字母、数字和下划线组成不能包含空格和其他字符。
错误的标识符声明**string** $user; //错在使用了其他字符
②变量名不能用数字开头。
错误的标识符声明**double** 6h;//错在用数字开头
③不能用关键字当变量名。
错误的标识符声明**char** static ;//错在用关键字**static**做变量名
2-13 C#的算术运算符(一)
计算机程序当然少不了“计算”要计算就必须了解运算符。今天我们先学习算术运算符中的加、减、乘、除。
加 。加号有2个用途当用加号连接两个数字时会计算出这两个数字的和。比如
Console.WriteLine(92.2);//输出11.2另一种情况当加号两边包含字符串的时候会把两边的表达式连接成新的字符串。比如
Console.WriteLine(92.2);//输出92.2因为2.2是字符串所以9也被转换为9起的作用是连接字符串减- 。减号的作用就是减法。比如
Console.WriteLine(15-23);//输出-8乘* 。乘号的作用是求2数的乘积。比如
Console.WriteLine(0.8*3);//输出2.4除/ 。除号的作用是求2数相除的商。比如
Console.WriteLine(2/0.5);//输出4.0但是2个整数相除结果仅保留整数部分小数部分会被舍去。
Console.WriteLine(5/10);//输出02-14 C#的算术运算符二
这一节我们学习取余运算符。
C#中的取余运算符就是**%。上一节学习的除号作用是求2个数字相除的商而取余运算符%的作用是求两个数字相除的余数**。比如
Console.WriteLine(19/5);//求19除以5的商输出3
Console.WriteLine(19%5);//求19除以5的余数输出4商3余4编程中%常常用来检查一个数字是否能被另一个数字整除。比如下面的代码片段
int number 29;
Console.WriteLine(number%2);//求number除以2的余数如果输出0,表示没有余数即number能够被2整除是偶数如果输出1表示有余数即number不能被2整除是奇数。
2-15 C#的算术运算符三
这一节学习两个特别的运算符**和–**。
叫做自加运算符。比如你今年18岁明年长了一岁用代码写出来是这样
int age18;//今年18岁
ageage1;//明年在今年的年龄上加1岁也可以写成这样
int age18;//今年18岁
age;//明年在今年的年龄上加1岁age;与ageage1;作用相同都是变量的值1。
–叫做自减运算符。同理你今年18岁用了XX护肤水以后明年变成17岁了可以这样写
int age18;//今年18岁
age--;//等同于 ageage-1;另外age;与age--;也可以写作age;或--age;
但请注意如果与其他运算在同一语句中写在变量前面或后面算法不一样请看下例
Console.WriteLine(age);作用等同于下面两句
Console.WriteLine(age);//先打印
ageage1;//后自加Console.WriteLine(age);作用等同于下面两句
ageage1;//先自加
Console.WriteLine(age);//后打印你看运算顺序不一样吧所以输出的结果也不会相同。
2-17 C#的比较运算符
比较数字大小或者比较数字相等的运算符是比较运算符。C#中的比较运算符有 注意表示两个值相等的“等于”是由2个“”组成的。
比较运算的结果都是布尔类型 bool bool类型我们是第一次提到它表示逻辑上的真(成立)与假(不成立)。真与假用关键字 true 和 false 表示。 上面程序中 xy 不成立会返回 false xy 成立会返回 true 。运行结果
2-18 C#的逻辑运算符一
逻辑运算符用来连接多个 bool 类型表达式实现多个条件的复合判断。C#中的逻辑运算符包括逻辑非( ! )、逻辑与( )、逻辑或( || )。
逻辑非用来对某一个 bool 类型表达式取反即“真变假”或“假变真”。请看下面的代码
Console.WriteLine(1 0);//条件表达式为true输出True
Console.WriteLine(!(1 0));//用逻辑非对条件表达式取反输出False逻辑与用来判断 2 个 bool 类型表达式是否同时为 true 。请看下面的代码
int x 5, y 2;//同时声明2个int型变量并赋值
Console.WriteLine(x3 y3);//判断x3和y3是否同时为true由于y3为false所以整个表达式为false只有当两边的表达式均为 true 时整个表达式才为 true 若任意一个表达式为 false 整个表达式即为 false 。
逻辑或用来判断2个 bool 类型表达式中是否有一个为 true 。请看下面的代码
int x 5, y 2;//同时声明2个int型变量并赋值
Console.WriteLine(x3 || y3);//判断x3和y3是否有一个为true由于x3为true所以整个表达式为true只要||两边的表达式有一个为 true 整个表达式即为 true 若两边的表达式均为 false 整个表达式为 false 。
对比一下就是说 运算符两边同真才算真一边为假就算假 || 运算符一边为真即为真两边同假才是假。
C#的逻辑运算符二
作为对上一节学习的巩固这一节我们通过几个示例熟悉逻辑运算符的应用。第一个示例是关于逻辑与比如小张想结婚未来丈母娘开出的条件是存款必须过10万必须有房子这两条少一条都不行。既然2个条件都是“必须”做到那就需要同时满足适合用逻辑与连接 运行结果为False
下一个示例是关于逻辑或比如丽丽选择男朋友的标准要么是“工程师”要么是“运动员”二者居其一即可 运行结果为True
2-21 C#的赋值运算符
前面我们已经学过一个赋值运算符“”这次我们学习一下其他的赋值运算符
加****赋值“”先加后赋值。请看下面的例子
int x5;
x 2;//这句等同于xx2;执行后x的值为7减****赋值“-”先减后赋值。请看下面的例子
int x5;
x - 2;//这句等同于xx-2;执行后x的值为3乘****赋值“*”先乘后赋值。请看下面的例子
int x5;
x * 2;//这句等同于xx*2;执行后x的值为10除****赋值“/”先除后赋值。请看下面的例子
int x5;
x / 2;//这句等同于xx/2;执行后x的值为2取余赋值“%”先取余后赋值。请看下面的例子
int x5;
x % 2;//这句等同于xx%2;执行后x的值为1与其他运算符从左向右计算不同赋值运算符从右向左计算。
2-22 C#的运算符优先级
前面我们学习了那么多运算符如果编程中同时使用了多个运算符到底哪一个会先运算呢这就是优先级的问题。C#运算符的优先级请参考下面的顺序
①括号。学数学的时候我们就知道要先计算括号里面的内容。C#语言也是一样如果有多层括号要从里向外计算。括号优先级最高。
②一元运算符。有些运算符两边有2个操作数比如23、6%5等等这些叫做二元运算符。只有一个操作数的叫做一元运算符它们的优先级高于二元运算符。一元运算符包括(自加) 、 --自减 、 !逻辑非。
③***乘、/除、%取余**。
④**加、-减**。
⑤**大于、小于、大于等于、小于等于**。
⑥**等于、!不等于**。
⑦**逻辑与**。
⑧**||逻辑或**。
⑨赋值运算符。包括、、-、*、/、%。
另外还需要注意一点优先级相同的运算符从左向右计算赋值运算符相反。
请看下面这段代码
bool b 20 - (15 - 8) * 2 10 (2 % 2 * 2 2) 2;
Console.WriteLine(b);分析首先计算优先级最高的括号(15-8)得到7(2%222)则需要先计算%和后算结果是2表达式就变成了
bool b20-7*21022;接下来优先级最高的是7*2然后是减法变成
bool b61022;继续计算两个大于号得到
bool bfalsefalse;第3章 条件结构
3-1 C#用流程图描述程序逻辑
流程图是程序步骤的图形化表示方法。流程图中包括如下符号 以上图形中流程线用来连接相邻的两个步骤每一个程序都有且仅有一个开始和结束。
以下流程图描述的是求2个浮点数的和后边是用C#实现 3-2 C#中判断和分支
走到岔路口需要选择方向。编写程序也会遇到判断和分支。请看下面的流程图判断手机账户余额是否不足10元如果不足给出提示 这个程序在“balance10”这个步骤出现了分支“balance10”被称为判断 bool 类型当判断为 true 时执行左边的分支输出提示当判断为 false 时执行右边的分支不输出任何内容。
在C#中这个结构成为条件结构通常用 if 关键字来实现 当 if 右边的判断为 true 的时候会执行分支一如果判断为 false 则不会执行分支一。
3-3 C#中if…else条件结构
前一节我们学习了 if 条件结构。条件结构可以有2个分支比如下面的流程图判断一个整数是奇数还是偶数 这个流程图从C#实现如下其中条件为 true 时执行的分支写在 if() 后面的{}中条件为 false 时执行的分支写在 else 后面的{}中。 这个由 if 和 else 组成的结构是条件结构的一种它的基本逻辑是当条件为 true 时执行分支1否则执行分支2。这段程序中变量num能够被2整除时会执行分支1不能被2整除时执行分支2。程序的运行结果是 每一个 if…else 结构都包含 1 个条件和 2 个分支而程序会根据条件的真与假选择执行其中的某一个分支。条件必须为 bool 类型的表达式。
3-5 C#中嵌套的if结构
程序开发中往往需要先判断一个条件是否成立再判断另一个条件。比如下面的例子验证账号是否为“admin”如果不是则提示错误如果是则验证密码是否为“bj2022” 用C#实现如下 外层的**if** (userName admin) 会被首先判断如果为 false 就会输出“用户名错误”如果为 true 再判断内层的**if** (password bj2022)。
3-6 C#中多重if结构
如果有多个条件其中只有一个成立应该怎样判断呢比如小明考试90分以上奖励一台手机80-89分奖励一个滑板60-79分奖励一个烧饼60以下没有奖励0-100的分数被划分为4档需要做3次条件判断。如果用上一节学习的嵌套if结构完成3层if的嵌套会使程序变得很复杂。本节我们使用多重 if 结构实现它的基本语法为 程序运行时将从上到下依次判断条件若某个条件为 true 则执行对应的分支并且停止后面条件的判断。比如下面的代码将输出“奖励一个烧饼”
3-7 C#中else与if的匹配
if…else 条件结构中如果某个分支只包含一条命令那么是可以省略大括号{}的。比如上一节的练习可以简化为
请注意如果分支中包含2条以上的命令是不能省略{}的。
如果 if 和 else 比较多又省略了{}怎么判断那一个 if 和哪一个 else 是一对呢请看下面的代码 当出现多个 if 和 else 又没有{}来界定范围时请参考下面2条原则
①每一个 else 与前面离它最近的 if 配对。按照这个原则上面示例代码的两个 else 都与第二个 if 配对这显然是不可能的于是又有了第二个原则。
②多个 else 都与同一个 if 相近时最内层的 else 优先配对。这样第一个 else 处于内层就与第二个 if 优先配对第二个 else 只能与第一个 if 配对。上面的示例代码会输出“C”。
根据这两个原则上面的代码等同于如下的规范代码
编写条件结构时尽可能加上 {} 可以省掉不必要的错误和麻烦。
3-9 C#的条件运算符
C#提供了一种条件运算符能够代替简单的 if…else 结构。这种条件运算符的语法如下
条件表达式 ? 分支1 : 分支2?: 就是条件运算符可以看到它有3个操作数所以又被称为三元运算符。它的运算逻辑是当条件表达式为 true 时执行分支1当条件表达式为 false 时执行分支2。
下面的例子中根据年龄的大小输出“成年人”或“未成年人” 因为age17所以条件表达式age18的值为 false 返回“未成年人”。
3-10 C#的switch结构
if…else 之外C#中还有一种 switch 条件结构可以用来对变量进行多个分支的等值判断。语法如下 变量与每一个 case 后面的常量进行等值比较如果相等就执行对应的分支。执行分支以后 break 关键字会使 switch 结构中止不会再判断后面的常量。如果变量与所有的常量都不相同则执行 default 后面的分支。
下面的代码根据运算符完成了四则运算中的一项 上面的代码因为变量oper的值与 case ‘*’ 匹配所以会输出乘积“18”。
switch 中的变量只能是3种类型整型(如 int )、字符型( char )、字符串类型( string )。
”或“未成年人”
[外链图片转存中…(img-SC0XbfIe-1705239736445)]
因为age17所以条件表达式age18的值为 false 返回“未成年人”。
3-10 C#的switch结构
if…else 之外C#中还有一种 switch 条件结构可以用来对变量进行多个分支的等值判断。语法如下
[外链图片转存中…(img-6axm5Fdw-1705239736445)]
变量与每一个 case 后面的常量进行等值比较如果相等就执行对应的分支。执行分支以后 break 关键字会使 switch 结构中止不会再判断后面的常量。如果变量与所有的常量都不相同则执行 default 后面的分支。
下面的代码根据运算符完成了四则运算中的一项
[外链图片转存中…(img-F3snY4hE-1705239736446)]
上面的代码因为变量oper的值与 case ‘*’ 匹配所以会输出乘积“18”。
switch 中的变量只能是3种类型整型(如 int )、字符型( char )、字符串类型( string )。