版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、流程控制语句与函数第1页,共46页,2022年,5月20日,11点27分,星期四5.1 控制程序流程控制程序流程的方法很多,主要有如下3种。选择语句:如同考试中的单选题目,选择执行了某条语句,另一条就不会再执行。循环语句:在需要将一个表达式进行多次重复运算时,可以使用循环语句,指定其循环次数或者界定其退出循环的条件。 goto语句:即标记语句,使程序自动跳到标记语句处执行,标记语句执行完毕又直接回到调用标记语句处。需要注意的是,在程序中最好不使用goto语句,因为该语句会使得程序代码可读性很差。第2页,共46页,2022年,5月20日,11点27分,星期四5.2 使用选择语句5.2.1 if语
2、句用if语句实现单分支选择结构 if(表达式)语句; 语句中的表达式通常用于表示条件,应为关系表达式或逻辑表达式。语句只是一条语句,如果在条件满足时需要执行多条语句,应使用花括号()括起来,使之成为语句块。“(表达式)”中的括号不能省略。第3页,共46页,2022年,5月20日,11点27分,星期四5.2.1 if语句示例:static void Main(string args) double score; score = Convert.ToDouble (Console.ReadLine(); if (score = 60) Console.WriteLine(恭喜你,通过了这次考试!)
3、; Console.Read(); 第4页,共46页,2022年,5月20日,11点27分,星期四5.2.1 if语句用if语句实现双分支选择结构 if(表达式) 语句1; else 语句2;第5页,共46页,2022年,5月20日,11点27分,星期四5.2.1 if语句用if语句实现多分支选择结构 if(表达式1) 语句1;else if(表达式2) 语句2;else if(表达式3) 语句3;else语句n;第6页,共46页,2022年,5月20日,11点27分,星期四5.2.2 switch语句在C#语言中,除了可以使用if语句实现多分支外,也可以使用switch语句 。switch(
4、表达式) case常量表达式1: 语句1; break; case常量表达式2: 语句2; break; case常量表达式n: 语句n; break; default: 语句n+1; break; 第7页,共46页,2022年,5月20日,11点27分,星期四5.2.2 switch语句switch表达式的类型为sbyte、byte、short、ushort、int、uint、long、ulong、char、string、枚举或用户自定义类型。每个case分支中的常量表达式必须能隐式转换为switch表达式的类型,且常量表达式的值不能相同,从而保证分支选择的唯一性。如果某个分支有多条语句,可
5、以用花括号括起来,也可以不加花括号。default分支可有可无,但是每个switch语句最多只能有一个default分支。当default语句缺省时,如果switch后面的表达式值与任意常量表达式值不相等,将不执行任何语句,直接退出switch语句。各分支语句中的break不可省略,否则将会出现错误。使用switch语句时一定要注意,case后面必须是常量表达式,以冒号结束而不是分号,且case语句后一定要跟break语句,这一点跟Java和C+不同。第8页,共46页,2022年,5月20日,11点27分,星期四5.2.2 switch语句示例:static void Main(string
6、args) double score; char class1; int i; Console.WriteLine(请输入你的成绩:); score = Convert.ToDouble (Console.ReadLine(); i = (int) score / 10; switch (i) case 10: case 9: class1 = A; break; case 8: class1 = B; break; case 7: class1 = C; break; case 6: class1 = D; break; default: class1 = E; break; Console
7、.WriteLine(你的成绩等级为:0,class1 ); 第9页,共46页,2022年,5月20日,11点27分,星期四5.2.3 switch语句的控制类型switch语句的控制可以按case语句的排列先后顺序进行,也可以通过跳转语句来实现。 示例:实现switch语句的跳转语句 。 static void Main(string args) int days = 0; int month = 3; switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case
8、 2: days = 28; break; case 4: case 6: case 9: case 11: days = 30; break; default: days = 0; break; Console.WriteLine(this month has 0 days, days); 第10页,共46页,2022年,5月20日,11点27分,星期四5.3 使用循环语句5.3.1 while语句while语句是用来实现循环的语句,该类循环先测试循环条件再执行循环体,按照不同条件执行循环体部分零次或多次。它的语法形式如下。while(表达式) 循环体部分;第11页,共46页,2022年,5
9、月20日,11点27分,星期四5.3.1 while语句注意:循环体如果包含一条以上的语句,应以花括号括起来作为复合语句。在循环体中,通常应包含改变循环条件表达式值的语句,否则便会造成无限循环。由于先判断条件,可能出现第一次测试条件时,表达式的值就为false。此种情况下循环体将一次也不执行,又称“允许0次循环”。第12页,共46页,2022年,5月20日,11点27分,星期四5.3.1 while语句示例: class TestWhile static void Main(string args) int number = 1, sum = 0; while (number = 10) su
10、m+=number ; number+; Console.WriteLine(the sum is 0, sum ); Console.Read(); 执行上述代码,运行结果为:the sum is 55。第13页,共46页,2022年,5月20日,11点27分,星期四5.3.2 do语句do循环语句实现的是直到型循环,该类循环先执行循环体再测试循环条件。 do 循环体语句while(表达式);第14页,共46页,2022年,5月20日,11点27分,星期四5.3.2 do语句示例: class TestWhile static void Main(string args) int numbe
11、r = 1, sum = 0; do sum+=number ; number+; while (number = 10); Console.WriteLine(the sum is 0, sum ); Console.Read(); 执行上述代码,运行结果为:the sum is 55。第15页,共46页,2022年,5月20日,11点27分,星期四5.3.3 for语句for(表达式1;表达式2;表达式3)语句;第16页,共46页,2022年,5月20日,11点27分,星期四5.3.3 for语句表达式1、2、3都可以省略,分号不能省略。如果表达式1、2、3都省略,则将无终止地执行循环体。
12、表达式2是循环控制条件,如果省略,循环将无终止地进行下去。表达式1一般用于为循环控制条件赋初值,也可以是与循环变量无关的其他表达式。如果表达式1省略或者是与循环条件无关的其他表达式,则应该在for语句之前给循环控制条件赋初值。表达式3一般用于改变循环控制条件的值。如果表达式3省略或者是其他与循环条件无关的表达式,则应该在循环体中另有语句改变循环条件,以保证循环能正常结束。第17页,共46页,2022年,5月20日,11点27分,星期四5.3.4 foreach语句foreach(类型 标识符 in 表达式)嵌入语句;示例:static void Main(string args) int li
13、st = 10, 20, 30, 40, 50, 60 ; foreach (int m in list) Console.Write(0,-5, m); Console.Read();第18页,共46页,2022年,5月20日,11点27分,星期四5.3.5 break语句和continue语句break语句用于跳出包含它的switch、while、do、for、foreach语句,如果break不是在switch、while、do、for、foreach语句块中,将发生编译错误。当switch、while、do、for、foreach语句相互嵌套时,break语句只是跳出直接包含它的语句块
14、。 第19页,共46页,2022年,5月20日,11点27分,星期四5.3.5 break语句和continue语句 class TestBreak static void Main(string args) for (int i = 0; i 10; i+) Console.Write(enter a word :); string s = Console.ReadLine(); if (s = end) break; Console.WriteLine(you entered :0 , s); Console .Read (); 第20页,共46页,2022年,5月20日,11点27分,星
15、期四5.3.5 break语句和continue语句continue语句类似于break语句,也必须用于while、do while、for、foreach语句,它只从循环的当前迭代中退出,然后在循环的下一次迭代开始重新执行,而不是退出循环。需要注意如下事项。continue语句的目标地址为直接包含它的while、do while、for或者foreach语句的嵌套语句结尾。假如continue语句不能被while、do while、for或者foreach语句包含,将发生编译错误。当有while、do while、for或者foreach语句相互嵌套时,continue语句只适用于直接包含它
16、的语句块。如果要在多个嵌套语句中完成转移,必须使用goto语句。第21页,共46页,2022年,5月20日,11点27分,星期四5.3.5 break语句和continue语句示例static void Main(string args) for (int i = 0; i 10; i+) Console.Write(enter a word :); string s = Console.ReadLine(); if (s = end) continue; Console.WriteLine(you entered :0, s); Console .Read ();第22页,共46页,2022
17、年,5月20日,11点27分,星期四5.4 使用goto语句 goto语句是除选择语句、循环语句之外的控制程序流程的语句,常用于将程序流程转移出嵌套范围。 goto语句的常见用法为goto lable语句。其中,lable为一个标签 ,其语法形式为:标签1:第23页,共46页,2022年,5月20日,11点27分,星期四5.4 使用goto语句示例:static void Main(string args) int n = 1, sum = 0; lable : if (n=5) sum=sum+n; n+; goto lable; Console .WriteLine (sum=0,sum
18、); Console .Read ();第24页,共46页,2022年,5月20日,11点27分,星期四5.5 嵌套使用流程控制语句选择结构的嵌套 :if(表达式1) if(表达式2) 语句1 else 语句2else if(表达式3) 语句3 else 语句4第25页,共46页,2022年,5月20日,11点27分,星期四5.5 嵌套使用流程控制语句循环结构的嵌套 示例:static void Main(string args) int i = 1, a = 0; for (; i = 5; i+) do i+; a+; while (i 3); i+; Console.WriteLine(
19、a的值为0,i的值为1, a, i); Console.ReadLine(); 第26页,共46页,2022年,5月20日,11点27分,星期四5.6 函数5.6.1 函数的定义与使用函数在使用之前必须先定义,函数定义的形式如下。函数修饰符 数据类型标识符 函数名(形式参数说明列表) 变量、数组的定义语句; 其他可执行部分 函数的返回值是需要返回给主调函数的处理结果,由return语句给出。对于无返回值的函数,其类型标识符为void,不需要return语句 第27页,共46页,2022年,5月20日,11点27分,星期四5.6.1 函数的定义与使用示例:编写一个函数,用于求任意两个整数之间所有
20、数的平方和。 class Program private static int pfh(int x, int y) int i, sum = 0; for (i = x; i = y; i+) sum = sum + i * i; return (sum); 第28页,共46页,2022年,5月20日,11点27分,星期四5.6.1 函数的定义与使用函数的使用 在类中的某个函数中,调用本类中由“函数名”指定的函数,其语法形式如下:函数名(实际参数列表)调用由另一个类的对象指定的函数,其语法形式如下: 对象名.方法名(实际参数列表)只能调用非本类的另一个类的静态方法,其语法形式如下:类名.方法名
21、(实际参数列表)第29页,共46页,2022年,5月20日,11点27分,星期四5.6.2 函数的参数传递参数传递中的类型转化 示例:class Program static float Sqr(float k) return (k * k); static void Main(string args) int y; float yy; y = 6; yy = Sqr(y); Console.WriteLine(0的平方是1, y, yy); Console.ReadLine(); 第30页,共46页,2022年,5月20日,11点27分,星期四5.6.2 函数的参数传递参数传递的类型 值传递
22、时参数的语法形式如下:参数类型 参数名引用传递参数的语法形式如下:ref 参数类型 参数名输出引用类型参数的语法形式如下:out 参数类型 参数名参数数组:使用params关键字声明参数的个数为不确定。第31页,共46页,2022年,5月20日,11点27分,星期四5.6.2 函数的参数传递引用传递参数示例:class Program static void swap(ref int a, ref int b) int i; i = a; a = b; b = i; static void Main(string args) int x, y; Console.WriteLine(请输入x和y
23、的值:); x = Convert.ToInt32(Console.ReadLine(); y= Convert.ToInt32(Console.ReadLine(); swap(ref x, ref y); Console.WriteLine(转换后x和y的值为:0,1, x, y); Console.ReadLine(); 第32页,共46页,2022年,5月20日,11点27分,星期四5.6.2 函数的参数传递输出引用类型参数示例:class Program static void swap(out int a, out int b) int i; a = Convert.ToInt32
24、(Console.ReadLine(); b = Convert.ToInt32(Console.ReadLine(); i = a; a = b; b = i; static void Main(string args) int x, y; swap(out x, out y); Console.WriteLine(转换后x和y的值为:0,1, x, y); Console.ReadLine(); 第33页,共46页,2022年,5月20日,11点27分,星期四5.6.2 函数的参数传递参数数组示例:class Program public static float Average(para
25、ms long array) long total, i; for (i = 0, total = 0; i array.Length; +i ) total = total + arrayi; return (float)total / array.Length); static void Main(string args) float x = Average(1, 2, 3, 5); Console.WriteLine(1、2、3、5的平均值为0, x); x = Average(10, 20, 35, 52); Console.WriteLine(10、20、35、52的平均值为0, x
26、); Console.ReadLine(); 第34页,共46页,2022年,5月20日,11点27分,星期四5.6.3 内联函数对于一些功能简单、规模较小又使用频繁的函数,CLR会做出是否使用内联函数的判断。内联函数不在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处,这样就节省了参数传递、控制转移等消耗。注意:在何处内联代码完全由CLR判断得出,无法使用诸如C+中inline的关键字来控制哪些方法是内联的。第35页,共46页,2022年,5月20日,11点27分,星期四5.6.4 函数重载函数重载允许一个类中有同名的函数存在,即一个类中可以存在两个以上的函数名称相同。重载函数的形
27、参必须不同,可以个数不同或者类型不同 。示例:int add(int x,int y);int add(int a,int b); /错误!编译器不以形参名来区分函数int add(int x,int y);void add(int x,int y); /错误!编译器不以返回值来区分函数第36页,共46页,2022年,5月20日,11点27分,星期四5.6.4 函数重载示例:class Program public static int Add(int i, int j) return i + j; public static string Add(string s1, string s2)
28、return s1 + s2; public static long Add(long x) return x + 5; static void Main(string args) Console.WriteLine(Add(1, 2); Console.WriteLine(Add(1, 2); Console.WriteLine(Add(10); Console.ReadLine(); 第37页,共46页,2022年,5月20日,11点27分,星期四5.7 常用内部函数5.7.1 随机函数介绍在C#中要生成随机数需要使用Random类 。该类的主要方法是Next方法,它生成一个介于两个整数之
29、间的随机数,其语法形式如下:public virtual int Next( int minValue,int maxValue);第38页,共46页,2022年,5月20日,11点27分,星期四5.7.1 随机函数介绍示例: class Program static void Main(string args) Random op1 = new Random(10); Random op2 = new Random(); int result; result = op1.Next(10, 99) + op2.Next(0, 9); Console.WriteLine(result); Con
30、sole.Read(); 由于结果是随机值,所以这里不再描述运行结果, 第39页,共46页,2022年,5月20日,11点27分,星期四5.7.2 格式化函数介绍.NET为处理数字、日期以及字符串的格式化提供了WriteLine方法、Format方法和ToString方法。通过WriteLine方法和Format方法可对多个变量进行格式化,ToString方法只能对一个变量进行格式化。对于使用WriteLine方法和Format方法格式化字符串,规定格式的一般语法形式如下。N,M:格式码 精度对于使用ToString方法格式化字符串,规定形式的一般语法如下。格式码 精度第40页,共46页,20
31、22年,5月20日,11点27分,星期四5.7.2 格式化函数介绍 :表示其中的内容为可选项。N:表示要格式化的参数的索引。M:可选参数,表示格式化后的参数所占的宽度。如果M是负数,那么格式化后的值就是左对齐的;如果M是正数,那么格式化后的值是右对齐的;如果未指定M,则默认为零。格式码:可选的格式化代码字符串。精度:格式化输出的有效位数或小数位数。第41页,共46页,2022年,5月20日,11点27分,星期四5.7.3 日期函数介绍用于处理时间和日期的对象为DateTime结构和TimeSpan类。DateTime结构用于表示日期和时间,表示范围在0001年1月1日午夜12:00:00到99
32、99年12月31日晚上11:59:59之间的日期和时间,最小时间单位等于100纳秒。TimeSpan类可以表示一个时间间隔,表示范围可以在Int64.Min Value到Int64.Max Value之间。 第42页,共46页,2022年,5月20日,11点27分,星期四5.7.3 日期函数介绍DateTime结构的常用方法如下:AddYears、AddMonths、AddDays、AddHours、AddMinutes、AddSeconds方法,用于将指定的年、月、日、时、分、秒加到DateTime上。Substract方法:日期相减。IsLeapYear方法:判断是否为闰年。true为闰年,false为非闰年。ToLongDateString和ToLongTimeString方法:把DateTime转换为字符串,且以长格式表示日期或时间。ToShortDateString和ToShortTimeString方法:把D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆大学课程设计仿真图
- 二零二五年度橘子种植基地承包与农产品出口协议3篇
- 二零二五年度美发店设备更新换代及技术升级合同4篇
- 2025年度新型节能门窗安装承揽合同范本3篇
- 2025年项目咨询管理合作协议范本详解3篇
- 二零二五年度酒店客房门锁更换与升级服务合同4篇
- 2025年校车照管员岗位责任与风险防控合同2篇
- 二零二五年度民用航空运输合同服务质量提升方案4篇
- 二零二五年度模板木枋行业创新发展基金合作合同4篇
- 2025年度高校教学楼租赁合同及智能化教学系统建设3篇
- 轨道工程-第三章-有砟轨道
- 泌尿:膀胱肿瘤病人的护理查房王雪-课件
- 标点符号的研究报告
- 服务器报价表
- 2025年高考化学试题分析及复习策略讲座
- 2024-2029年中国制浆系统行业市场现状分析及竞争格局与投资发展研究报告
- 大门封条模板
- ppr管件注塑工艺
- 液化气站其他危险和有害因素辨识及分析
- 高中语文教学课例《劝学》课程思政核心素养教学设计及总结反思
- 中国农业银行小微企业信贷业务贷后管理办法规定
评论
0/150
提交评论