版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,2,本章教学目标,掌握赋值语句、输入输出语句和输出格式控制方法 掌握利用if和switch实现分支结构的方法,熟练掌握条件表达式构建方法 理解循环语句的结构特点和语法规则,熟练掌握运用循环语句求解有规律重复运算问题的方法,3,程序的基本结构,3.1 顺序结构 3.2 选择结构 3.3 循环结构,4,3.1 顺序结构,结构顺序,就是各语句按出现的先后顺序依次执行 赋值语句 输入/输出语句 控制台输入输出语句 描述输出信息格式的Format函数 消息框(MessageBox),5,3.1.1 赋值语句,(1)“=”左边只能是变量名,不允许出现常量或表达式 (2)不要将赋值运算与代数方程的概念相
2、混淆 (3)可以在同一个赋值语句中为多个变量赋值 例如, int x, y; x = y = 5; 变量x和y都赋值为5。,6,复合赋值语句,7,3.1.2 控制台输入输出语句,Console.Read()方法 Console.ReadLine()方法 Console.Write()方法 Console.WriteLine()方法,8,实例3.2,例3.2 通过控制台接收用户输入的一个字符串,并通过控制台输出这个字符串的内容。 using System; class Program static void Main() string s; Console.Write(请通过键盘输入一个字符串:
3、); s = Console.ReadLine(); /等待用户键盘输入字符串 Console.Write(刚才输入的字符串是:); Console.WriteLine(s); ,9,实例3.3,例3.3 计算圆的面积 using System; class circle static void Main() double r, pi, area; string s; Console.Write(“请通过键盘输入一个半径的值:); s = Console.ReadLine(); r = double.Parse(s); area = 3.14159 * r * r; Console.Write
4、Line(半径为0的圆面积 = 1, r,area); ,10,3.1.3 输出格式控制,在控制台应用程序的Write()和WriteLine()方法中,可以用格式控制字符串来修饰数据输出格式,调用形式如下: Console.WriteLine(格式控制字符串, 输出数据项列表); 在Windows窗体应用程序中,可以通过String类的静态方法String.Format()实现输出格式控制,调用形式如下: String.Format(格式控制字符串, 输出数据项列表);,11,表3-2 格式控制字符的意义及应用举例,12,3.1.4 消息框(MessageBox),消息框是Windows窗体
5、应用程序中经常用于人机交互操作的对象之一,用来显示简短的提示信息和几个按钮。显示消息框之后,程序处于等待状态,用户必须单击消息框中的某个按钮之后,程序才会继续运行。,13,无返回值的消息框,MessageBox.Show(text,title,buttons,icon); text 提示信息 title 标题栏上的提示信息 buttons 按钮的组合样式 icon 图标样式,14,有返回值的消息框,DialogResult var = MessageBox.Show(text,Text, buttons,icon);,15,例3.6 显示消息框中被选择按钮返回值,private void bu
6、tton1_Click(object sender, EventArgs e) DialogResult result = MessageBox.Show(“是否保存已修改过的内 容?, 保存文件, MessageBoxButtons.YesNoCancel); label1.Text = 您刚才选择的按钮是: + result; ,16,MessageBoxButtons集合的枚举选项,17,MessageBoxIcon集合的枚举选项,18,DialogResult的枚举常量,19,3.2 分支结构,3.2.1条件语句(If) 1If ( )单分支结构 2If( ) Else( )语句(双分
7、支结构),20,实例3.7,例3.7 在一个拥有“是”、“否”按钮组的消息框中,根据用户单击的按钮来决定是否结束程序运行。 private void Form1_Click(object sender, EventArgs e) DialogResult r1; r1 = MessageBox.Show(处理完成,结束程序运行吗?, 结束, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (r1 = DialogResult.Yes) this.Close(); label1.Text = 程序继续运行; ,21,实例3.8,例3.8
8、 判断学生的成绩是否及格 private void button1_Click(object sender, EventArgs e) double score = 0; score = double.Parse(textBox1.Text); if (score = 60) label2.Text = 学生成绩为及格; else label2.Text = 学生成绩为不及格; ,22,3.2.2 switch语句,switch(表达式) case 常量1: 语句块1; break; case 常量2: 语句块2; break; default: 语句块 n+1; break; ,适用于分支较
9、多的情况,23,switch语句的执行流程,先计算switch后面的表达式 然后将结果值与case后面的常量依次进行比较 如果找到匹配的case子句,就执行该分支的语句块,直到break语句为止 如果所有case都不匹配,则执行default的语句块 如果省略了default子句,则跳过整个switch结构,执行后续语句。,24,使用switch语句注意的问题,(1)switch后面的表达式必须是整数类型; (2)case常量仅限于离散的值,不能指定取值范围,不得重复,而且必须与表达式类型相兼容; (3)执行了一个case分支的语句块之后,必须退出整个switch结构,不允许再执行另一个cas
10、e分支的语句块,所以每个分支的语句块都必须以break作为结尾; (4)允许多个case指向相同的语句块。,25,例3.11,根据在文本框内输入的百分制成绩score,利用switch语句转换成优、良、中、及格、不及格等五个等级,并在窗体上的标签内显示,26,例3.11代码,private void button1_Click(object sender, EventArgs e) string grade; int score = int.Parse(textBox1.Text); switch (score / 10) case 10: case 9: grade = 优秀; break;
11、 case 8: grade = 良好; break; case 7: grade = 中等; break; case 6: grade = 及格; break; default: grade = 不及格; break; label2.Text = 学生成绩为 + grade; ,27,例3.12,从窗体上的文本框内输入一个17的整数,或者从“一”到“日”的汉字,在窗体上的标签内显示用英文表示的星期几(Sunday与数字7相对应),28,例3.12代码,private void button1_Click(object sender, EventArgs e) char today = cha
12、r.Parse(textBox1.Text); switch(today) case 一: case 1: label2.Text = Monday; break; case 二: case 2: label2.Text = Tuesday; break; case 三: case 3: label2.Text = Wednesday; break; case 四: case 4: label2.Text = Thursday; break; case 五: case 5: label2.Text = Friday; break; case 六: case 6: label2.Text = S
13、aturday; break; case 日: case 7: label2.Text = Sunday; break; default: label2.Text = Not a valid number!; break; ,29,3.2.3 条件运算符,result = 条件表达式 ? op1 : op2;,条件表达式为true时的返回值,条件表达式为false时的返回值,30,例3.9 百分制成绩转换成优、良、中、及格、不及格等五个等级 private void button1_Click(object sender, EventArgs e) double score = 0; stri
14、ng grade; score = double.Parse(textBox1.Text); if (score = 90) grade = 优秀; else if (score = 80) grade = 良好; else if (score = 70) grade = 中等; else if (score = 60) grade = 及格; else grade = 不及格; label2.Text = 学生成绩为 + grade; ,实例3.9,31,例3.10(1),例3.10判断最大值的位置 private void button1_Click(object sender, Even
15、tArgs e) int a, b, c; string result=最大值的位置在; a = int.Parse(textBox1.Text); b = int.Parse(textBox2.Text); c = int.Parse(textBox3.Text);,32,例3.10(2),if (a b) if (a c) result += 左边; else result += 右边; else if (b c) result += 中间; else result += 右边; label1.Text = result; ,33,3.3 循环结构,循环结构:通过有限次数地重复执行同一段代
16、码,完成运算,34,哪些问题需要通过循环来求解?,数据统计(求累加和、找最大值) 排序 资料检索(在成组数据中逐个比较查找),35,循环语句的类型,while dowhile for,36,3.3.1 while语句,语句格式 while(条件表达式) 循环体; 先判断后执行 循环体必须能够影响条件,37,实例3.15,例3.15 已知银行一年期整存整取的储蓄年利率为4.14%,在利率保持不变的情况下,经过多少年后,1000元存款能增值到2000元以上? 分析:在每年都将利息与本金一起继续存入的情况下, 1年后的存款总数为 1000(1+0.0414) 2年后的存款总数为 1000(1+0.0
17、414)(1+0.0414) 3年后的存款总数为 1000(1+0.0414)(1+0.0414)(1+0.0414) ,38,程序代码,private void Form1_Click(object sender, EventArgs e) double deposit = 1000; int i=0; while (deposit = 2000) deposit *= 1.0414; i+; label1.Text = 经过 + i + 年后,存款总数达到 + deposit + 元; ,39,3.3.2 do-while语句,语句格式 do 循环体; while(条件表达式); 先执行后
18、判断 循环体必须能够影响条件,40,实例3.16,例3.16 若全世界人口的年平均增长率保持在0.8%,计算全世界 人口从50亿增加到60亿需要多少年? private void Form1_Click(object sender, EventArgs e) double human=50, year=0; do human *= 1.008; year+; while (human 60); label1.Text = 经过 + year + 年后,世界人口达到 + human + 亿; ,41,3.3.3 for语句,for (表达式1; 表达式2; 表达式3) 语句块; 表达式1 完成循
19、环变量的初始化 表达式2 判断循环是否继续执行 表达式3 修改循环变量的值,控制循环条件,42,实例3.17,例3.17 编程计算100以内自然数的累加和 private void Form1_Click(object sender, EventArgs e) int s = 0; for (int i = 1; i = 100; i+) s += i; label3.Text = 1100的累加和= + s; ,43,例3.18,例3.18 编程计算任意正整数n的阶乘。 private void Form1_Click(object sender, EventArgs e) int f =
20、1, n = 8; /变量f用来保存计算阶乘的结果,初值应为1 for (int i = 1; i = n; i+) f *= i; /计算阶乘 label1.Text = n.ToString() + != + f.ToString(); ,44,实例3.19,例3.19 编程判断x是否为素数(第一种写法) private void Form1_Click(object sender, EventArgs e) double x; int n; bool t; x = double.Parse(textBox1.Text); n = (int)Math.Sqrt(x); t = true;
21、for (int i = 2; i = n; i+) if (x % i = 0) t = false; if (t = true) label2.Text = textBox1.Text + 是一个素数; else label2.Text = textBox1.Text + 不是素数; ,45,实例3.19,例3.19 编程判断x是否为素数(第二种写法) private void Form1_Click(object sender, EventArgs e) double x; int n; bool t = true; x = double.Parse(textBox1.Text); n
22、= (int)Math.Sqrt(x); for (int i = 2; i = n; i+) if (x % i = 0) t = false; label2.Text = (t = true) ? 是一个素数 : 不是素数; ,46,3.3.4 循环的嵌套,嵌套的原则是: 内层循环必须完整地包含在外层循环之内,循环体之间不得交叉。,47,例3.21 在窗体上输出九九乘法表,private void Form1_Click(object sender, EventArgs e) for(int i=1;i=9;i+) for (int j = 1; j = i; j+) label1.Tex
23、t += i + * + j + = + i * j + ; label1.Text += n; ,48,思考,怎样才能使输出结果排列得更整齐一些?,49,排列得更整齐一些,private void Form1_Click(object sender, EventArgs e) for (int i = 1; i = 9; i+) for (int j = 1; j = i; j+) int mult = i * j; if (mult 10) label1.Text += i + * + j + = + mult + ; else label1.Text += i + * + j + = +
24、 mult + ; label1.Text += n; ,50,思考,计算100到300之间的所有素数 核心程序:判断一个任意数是否为素数 private void Form1_Click(object sender, EventArgs e) double x = double.Parse(textBox1.Text); int n = (int)Math.Sqrt(x); bool t = true; for (int i = 2; i = n; i+) if (x % i = 0) t = false; label1.Text = (t = true) ? 是一个素数 : 不是素数; ,
25、51,代码,计算100到300之间的所有素数 private void Form1_Click(object sender, EventArgs e) for (double x = 101; x = 300; x+) int n = (int)Math.Sqrt(x); bool t = true; for (int i = 2; i = n; i+) if (x % i = 0) t = false; if(t=true) label1.Text += x + n ; ,52,思考,计算100到300之间的所有素数 素数的个数较多,无法在label上显示成一列,怎么办? 解决的办法: 每一
26、行上显示多个素数,53,3.3.5 循环的退出和跳过,循环语句是整个程序中最耗费时间的部分,在运算目标已经实现的情况下,提前结束整个循环,或提前结束本次循环,会显著节省程序的运行时间。,54,1循环的退出,如果预设的循环次数尚未执行完,或者测试条件尚未满足,就已经得到了所需的计算结果。这时,就没有必要让循环再继续执行下去了。 当执行到循环体内的break语句,则退出当前循环,执行后续语句。,55,例 3.22,例 3.22 同一笼中有鸡和兔共36只,已知它们有100只脚,问鸡和兔各有多少只? 分析:运用二元一次方程,可以很快地求解这个问题。但对于本例来说,由于计算的次数不多,不妨采用穷举法,通
27、过有限次数的试探得到答案。,56,例 3.22代码,private void Form1_Click(object sender, EventArgs e) int rabbit, chick,feet; for (chick = 1; chick = 36; chick+) /从鸡1,兔36-1开始试探 feet = chick * 2 + (36 - chick) * 4; if (feet = 100) /达到计算目标时,退出循环 break; rabbit = 36 - chick; label1.Text = 鸡有 + chick + 只n; label1.Text += 兔有 + rabbit + 只; ,57,2.循环的跳过,在一次循环的执行中,执行完循环体内的部分语句之后,就发现剩余的语句已经没有必要继续执行,可以利用continue语句跳过剩余的语句,提前结束本次循环。,58,例3.23,例3.23 编写Windows窗体应用程序,计算并在窗体上输出100以内的所有素数,59,例3.23代码,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽淮南市中考化学试卷及答案
- 第1课《社戏》 教学设计2025-2026学年统编版语文八年级下册
- 第三课 认识计算机(一)教学设计-2023-2024学年青岛版初中信息技术第一册
- 高中语文人教统编版选择性必修 下册5.2 边城(节选)教学设计
- 人教版 (PEP)六年级下册Unit 4 Then and now Part B第3课时教学设计
- 第七课 从这里出发教学设计初中道德与法治九年级下册统编版(五四学制)
- 山西省晋中市祁县2025-2026学年九年级(上)期末物理试卷(含答案)
- 辽宁省鞍山市岫岩满族自治县2026届高三下学期3月模拟预测地理试卷(含答案)
- 河北省承德市名校协作体2025-2026学年高二下学期3月阶段检测地理试卷(含答案)
- 甘肃省武威市凉州区河东中学、东河中学2026届九年级下学期中考第一次模拟考试历史试卷(含答案)
- 中国葡萄酒产区和企业-9
- 供应商声明书(REACH)
- 库房的管理制度
- GB/T 9797-2022金属及其他无机覆盖层镍、镍+铬、铜+镍和铜+镍+铬电镀层
- LY/T 1369-2011次加工原木
- GB/T 8642-2002热喷涂抗拉结合强度的测定
- GB/T 35010.3-2018半导体芯片产品第3部分:操作、包装和贮存指南
- GB/T 33365-2016钢筋混凝土用钢筋焊接网试验方法
- GB/T 17466.1-2008家用和类似用途固定式电气装置电器附件安装盒和外壳第1部分:通用要求
- 毫秒脉冲星及X-射线双星某些重要性质的理论解释课件
- 统编版下册《青蒿素:人类征服疾病的一小步》课件
评论
0/150
提交评论