版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
语言结构顺序结构选择结构:if语句、switch语句(重点)循环结构:for语句、while语句、do...while语句和foreach语句跳转语句:goto、break、continue、return、throw现实生活中的循环银行的ATM需要不停地为不同的客户服务我们每天的生活和学习需要重复生活中充满了循环食堂宿舍教室ATM业务ATM业务ATM业务ATM业务食堂食堂宿舍食堂宿舍食堂教室宿舍食堂
在编写程序过程中,往往出现相同类型操作需要重复出现,如实现1+2+…+100,则需要做99次加法,这类问题使用循环语句解决。即循环语句用于实现语句块的重复执行。C#中提供了四种不同的循环机制:for循环while循环do…while循环foreach循环foreach循环常用在遍历数组时用到。for循环语句
for循环常常用于已知循环次数的情况,使用该循环时,测试是否满足某个条件,如果满足条件,则进入下一次循环,否则,退出该循环。格式:for(表达式1;布尔表达式2;表达式3)
单语句或{循环语句序列}三元运算表达式for循环功能:truefalse语句布尔表达式21计算表达式1;2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;如果表达式2为false,则退出循环表达式1表达式31计算表达式1;2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;如果表达式2为false,则退出循环2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;如果表达式2为false,则退出循环2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;如果表达式2为false,则退出循环2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;表达式1for(表达式1;布尔表达式2;表达式3)
语句表达式1
for循环语句的使用【例子】计算1+2+3+…100。使用for语句实现。分析1:定义sum,连续写sum=sum+n;分析2:该问题属于重复执行加法的问题,并且参与运算的两个操作数不断的按规律增加。该类问题可以通过循环进行解决。例:求1+2+3+...+100的值sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);sum=sum+i;你想累死我啊!累加器写完这100条语句,就算出来了例:求1+2+3+...+100的值sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);i:1i:2i:3i:100i:101i:1sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);i:1i:2i:3i:100i:101sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);循环条件:i<=100这两条语句需要循环执行计算1+2+…+100的for循环流程intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);运行流程分析在窗体设计图上,双击按钮button1编写【计算】按钮的Click(单击)事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){intsum,k;sum=0;for(k=1;k<=100;k=k+1){sum=sum+k;}label1.Text="从1加到100值为"+sum.ToString();}程序的运行结果如图所示的左图,单击“计算”按钮,将在标签上显示运行结果。
程序运行结果【例子】计算n!,假设n=10。分析:该例实现阶乘的运算,可以使用改变乘数的值进行实现,使用循环可以方便的实现该类问题。程序的运行结果如图所示。计算n!n!=n*(n-1)*…*2*1privatevoidbutton1_Click(objectsender,System.EventArgse){intsum,k;sum=1;for(k=1;k<=10;k++){sum=sum*k;}textBox1.Text=sum.ToString();}编写【计算】按钮的Click(单击)事件代码为:练习:使用for语句,编程输出1~10的每个整数的平方staticvoidMain(string[]args){ints;for(inti=1;i<=10;i++){s=i*i;Console.Write("{0}\t",s);}}for语句的常见用法(1)inti;for(i=0;i<100;i++){
Console.WriteLine(i);}01234......9899运行结果:赋初值01234......9899循环体被运行100次,循环变量依次为0~99改变循环变量i:循环变量循环条件for语句的常见用法(2)inti;for(i=1;i<=100;i++){ Console.WriteLine(i);}12345......99100运行结果:循环体也被运行100次,循环变量依次为1~100inti;for(i=1;i<=100;i++){ Console.WriteLine(i);}12345......99100inti;for(i=1;i<=100;i++){ Console.WriteLine(i);}12345......99100for语句的简化:for(i=1;i<=100;i++)Console.WriteLine(i);可以为空可以为空可以为空,认为是trueinti=0;形成死循环分号不能省略哦!在for循环中定义变量for(inti=1;i<=100;i++)sum=sum+i;在for中定义的变量只在该循环语句内有效,在循环语句外不能访问可以在这里定义变量可以用于不知道循环次数的情况;用于在循环时判断是否满足某个条件。while循环语句的格式为:
while(布尔表达式)
单语句或者语句块
布尔条件表达式是每次循环开始前进行判断的条件,当条件表达式的值为真时,执行循环;否则,退出循环。该语句结构的流程图如图所示。
while循环while语句while(布尔表达式)
语句格式:功能:1如果布尔表达式为false,直接跳出循环;2如果为true,则执行语句,并继续第1步布尔表达式?语句falsetruewhile循环语句的使用【例子】设有一张厚为xmm,面积足够大的纸,将它不断地对折。试问对折多少次后,其厚度可达珠穆朗玛峰的高度(8844.43m)。设对折后纸的厚度为hmm,计数器为n。在没有对折时,纸厚为xmm,每对折一次,其厚度是上一次的2倍,在未到达8844.43m时,重复对折。在程序中,纸的厚度就是对折后纸的厚度,所以用一个变量h。建立应用程序用户界面与设置对象属性,如图所示。用户界面及程序运行结果privatevoidbutton1_Click(objectsender,System.EventArgse){intn=0;floath;h=float.Parse(textBox1.Text);while(h<8844430)//未到达8844.43m时,重复对折
{n=n+1;//计数器为n对折次数
h=2*h;//每对折一次,其厚度是上一次的2倍
}textBox2.Text=n.ToString();}求1+2+3+...+100的值
改成while循环:sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;cout<<sum<<endl;循环条件循环体语句5050运行结果:505050505050while运行流程分析i=1;while(i<=100){sum=sum+i;i++;}1<=100100<=100101<=100truetruefalse......在while循环的循环体中一般应该有使循环条件不成立的语句,否则会形成“死循环”;i=1;while(i<=100){sum=sum+i;i=i+1;}这个语句让循环条件可以不成立死循环:不会自动终止的循环i=1;while(i<=100){sum=sum+i;//i=i+1;}死循环去掉该语句,形成死循环运行时,死循环占用大量CPU时间i=1;while(i<=100){sum=sum+i;//i=i+1;}死循环i=1;while(i<=100){sum=sum+i;//i=i+1;}死循环while(true)可以形成死循环while(true){Console.WriteLine("Hello");}HelloHelloHelloHelloHelloHelloHello条件恒为true计算1+2+…+100
for循环和while循环intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);sum=0;i=1;while(i<=100){sum=sum+i;i=i+1;}Console.WriteLine(sum);for循环与while循环,功能完全相同(for可以转化为while,while也可以转为for)例:求一个整数x所有位数之和sum=0;while(x>0){sum+=x%10;x/=10;}Console.WriteLine(sum);算法思路:x%10可以得到个位数字,x=x/10可以得到去掉个位数字后剩下的数字。重复这个过程直到x变为0,可以依次得到所有数字学习编程语言的同时,也要学会用“计算机的思维方式”,掌握计算机解决问题的方法:算法do…while循环非常类似于while循环。差别在于while循环的测试条件在每一次循环开始时执行,而do…while循环的测试条件在每一次循环体结束时进行判断。同样的,do…while可以解决一些循环问题,但使用的频率较少。do…while语法的一般格式为:do
语句while(布尔表达式);do…while循环do...while语句do
语句while(布尔表达式);功能:truefalse语句表达式?1执行循环体语句;2计算表达式,如果为true,并继续第1步;
如果为false,则退出循环do…while的使用【例子】使用do…while语句实现1+2+3+…100。inti=1,sum=0;do{sum=sum+i;i=i+1;}while(i<=100);Console.WriteLine(sum);;是do...while语句的一部分,不要遗忘5050运行结果:do-while的循环体至少被执行一次inti=20;while(i<10){Console.WriteLine(i);i++;}inti=20;do{Console.WriteLine(i);i++;}while(i<10);运行结果:20运行结果:inti=20;while(i<10){Console.WriteLine(i);i++;}inti=20;do{Console.WriteLine(i);i++;}while(i<10);inti=20;while(i<10){Console.WriteLine(i);i++;}20inti=20;do{Console.WriteLine(i);i++;}while(i<10);inti=20;while(i<10){Console.WriteLine(i);i++;}inti=20;while(i<10){Console.WriteLine(i);i++;}inti=20;do{Console.WriteLine(i);i++;}while(i<10);inti=20;while(i<10){Console.WriteLine(i);i++;}foreach循环foreach语句用于循环访问数组或集合以获取所需信息。当为数组或集合中的所有元素完成迭代后,控制传递给foreach块之后的下一个语句
foreach(类型名称变量名称in数组或集合名称){
循环体语句序列;}当一个循环(称为“外循环”)的循环语句序列内包含另一个循环(称为“内循环”),称为循环的嵌套,这种语句结构称为多重循环结构。
内循环中还以包含循环,形成多层循环(循环嵌套的层数理论上无限制)。
三种循环(while循环、do…while循环、for循环)可以互相嵌套。在多重循环中,需要注意的是循环语句所在循环的层数。循环的嵌套循环的嵌套循环体内的语句也可以是任意循环语句inti;for(i=1;i<=100;i++){ j=0;while(j!=4)Console.WriteLine(j++);}内循环外循环【例子】编程实现九九乘法表。分析:本例中实现每一个一位数i显示从1乘到i,对于i的取值要从1取到9,所以可以使用两重循环实现,程序设计如图所示。九九乘法表本例的界面设计如图,使用label1控件实现乘法表的显示。本例使用两重循环实现,其中外层循环实现乘法表中第二乘数i取值范围为1到9,内层循环在外层循环的基础上计算第一个乘数k的取值范围为1到i,其乘积以及表达式在label控件中显示。运行结果如图所示。【九九乘法表】按钮的Click(单击)事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){label1.Text="";strings="";intsum;for(inti=1;i<10;i=i+1){s="";for(intk=1;k<=i;k=k+1){sum=k*i;s=s+k.ToString()+"×"+i.ToString()+"="+sum.ToString()+";";}label1.Text+=s+"\n";//显示并换行
}}例:利用for循环的嵌套
求1!+2!+3!+…+10!的和N!=1*2*3*…*N,称为N的阶乘例:4!=1*2*3*4=24计算N的阶乘的算法:mul=1;for(i=1;i<=N;i++)mul*=i;//循环结束后,mul保存N!N!=1*2*3*…*N,称为N的阶乘例:4!=1*2*3*4=24计算N的阶乘的算法:mul=1;for(i=1;i<=N;i++)mul*=i;//循环结束后,mul保存N!staticvoidMain(string[]args){longs=0;longm;for(inti=1;i<=10;i++){m=1;for(intj=1;j<=i;j++)m*=j;s=s+m;//累加到变量s}Console.WriteLine("1!+2!+3!+...+10!={0}",s);}避免内外循环的变量冲突计算i的阶乘到变量m循环嵌套练习******************************************************************************************在控制台下输出上面的图案(第n行,输出连续的2n个*)
综合练习
百钱买百鸡问题:每只公鸡值5元,每只母鸡值3元,三只小鸡值1元,用100元买100只鸡,问公鸡、母鸡和小鸡各买几只?
试分析该例中的循环语句和分支语句
并实现该功能的程序。综合练习
编写程序,输出所有介于100到999的水仙花数。
水仙花数是指一个n(n>=3)位数,每一位数字的n次幂的和正好等于这个数本身。比如:153=13+53+33跳转语句使用跳转语句执行分支,可以使程序执行跳转到程序中其它部分。C#中提供四种转移语句:
GotoBreakContinuereturn。
goto语句可以将程序控制直接转移给标签制定的语句。但由于goto语句改变了程序的正常流程,使得程序特别容易出错,所以尽量不要用。而且,用goto语句实现的循环完全可以用循环语句实现,因此,goto语句很少使用。goto语句goto语句:无条件转移语句goto
标号.......标号:........功能:控制流程直接转到指定标号处标号可以在goto之前或之后。但必须在同一个方法内goto
标号.......标号:........控制流程直接转到指定标号处标号可以在goto之前或之后。但必须在同一个方法内goto
标号.......标号:........控制流程直接转到指定标号处例:使用if和goto计算1+2+...+100usingSystem;classProgram{staticvoidMain(string[]args){inti=1,sum=0;Loop:sum+=i;i++;if(i<=100)gotoLoop;Console.WriteLine("1+2+3+...+100={0}",sum);}}Loop是自定义的标号(属于标识符)例:找到两个数,乘积为45,并且两个数都小于10,输出这两个数staticvoidMain(string[]args){inti=0,j=0;for(i=1;i<10;i++)for(j=1;j<10;j++)if(i*j==45)gotoend;end:Console.WriteLine("{0}*{1}={2}",i,j,i*j);}退出多重循环,是C#保留goto语句的最大价值只能从循环内层往外层跳转,不能从外层往内层跳转退出多重循环,是C#保留goto语句的最大价值只能从循环内层往外层跳转,不能从外层往内层跳转使用goto的注意事项:经验证明,使用goto语句实现循环,破环了程序的可读性。现代程序设计中,不提倡使用goto来完成循环。保留goto语句,应该仅仅用于跳出多重循环这个功能。用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;例:break跳出for语句inti;for(i=1;i<=100;i++){Console.WriteLine(i);if(i==5)break;}Console.WriteLine("Finished");12345Finished输出结果:break语句用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;输出结果:用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;12345Finished用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;break语句:强制退出一层循环只能够退出一层!!使用goto可以退出多层for(...;...;...){for(;;){........... break;.........} Console.WriteLine(n);}例:判断一个整数n是否为素数算法:输入n从2到n-1试验是否被n整除。如果任意一个能够整除,则不是素数如果全部试验都不能整除,则为素数素数:大于1的正整数,如果除了1和它本身,没有其它正因子算法伪代码输入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除
isPrime=false;}//现在,isPrime变量表示n是否素数伪代码是人交流算法时使用的不完整的代码,没有固定的语法,但写出关键的语句对所有的i进行检测是多于的,因为只要有一个i被n整除,已经可以判定不是素数,不需要继续试验。在这里,可以使用break语句跳出循环输入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除
isPrime=false;}//现在,isPrime变量表示n是否素数输入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除
isPrime=false;}//现在,isPrime变量表示n是否素数输入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除
isPrime=false;}//现在,isPrime变量表示n是否素数staticvoidMain(string[]args){intn,k;boolIsPrime=true;//标志
Console.WriteLine("请输入要检测的整数(大于1):");n=int.Parse(Console.ReadLine());for(k=2;k<n;k++)if(n%k==0){IsPrime=false;//可以肯定不是素数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理第一教育课件
- 新能源汽车三电系统培训教材
- 防爆设备专项检查活动方案
- 关于艾滋病问题
- 小学四年级数学几百几十数乘以一位数综合监控模拟题大全附答案
- 体育课前准备活动
- 为公司的企业文化建设进行问卷调查
- 中餐点餐培训课件
- 《通货膨胀与紧缩》课件
- 世界艾滋病日主题宣传日
- 统编小学语文五年级上册第七单元解读
- 搪塑成型工艺
- 弹塑性力学(浙江大学课件)
- 体育概论全部课件
- 《整式的加减》第2课时示范课教学设计【数学七年级上册北师大】
- 个人简历制作指导培训课件
- 小学科学校本课程教材
- 通用版高中化学二轮复习专题课件原子结构
- 2022年09月上海图书馆(上海科学技术情报研究所)2022年公开招考16名工作人员冲刺卷(3套)答案详解㈠
- 静脉血栓防治解读(实用课件)
- 主动脉球囊反搏术IABP
评论
0/150
提交评论