已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
什么是流程控制 程序代码执行的循序流程控制的分类 顺序执行 选择执行:有些代码可能执行,也可能不执行,有选择的执行某些代码 分类:if最简单的用法 格式:if(表达式) 语句 功能:如果表达式为真,执行语句 如果表达式为假,不执行语句 If的范围问题 If(表达式) 语句A 语句B 解释:if默认只能执行语句A的执行或不执行 If无法控制语句B的执行或不执行 或者讲:语句B一定会执行 If(表达式) 语句A 语句B 此时可以控制语句A和语句B 由此可见:if默认只能执行一个语句或不执行,如果控制多个语句执行或不执行,就必须把这些语句用括起来 Ifelse的用法 If(1) A Else if B Else if(3) C Else D例子:菲波拉契序列#includeint main() intn,i; intf1,f2,f3; f1=1; f2=2; printf(请输入你需要求的想序列:); scanf(%d,&n); if(n = 1) f3 = 1; elseif (n = 2) f3= 2; else for(i=3;i2); 等价于 if(32) :/这是一个空语句2) If(表达式1)AElseB正确的3) If(表达式1)A;Else if(表达式2)B;Else if(表达式3)C;ElseD;即便表达式1和2都成立也只会执行A4) If(表达式1)A;Else if(表达式2)B;Else if(表达式3)C;这样写虽然语法没错,但是逻辑上有漏洞5) If(表达式1)A;Else if(表达式2)B;Else if(表达式3)C;Else(表达式4) /第七行D;这样写是不对的,正确的写法是:要么去掉第7行的(表达式),要么在第七行的else后面加if6) If(表达式1)A;Else if(表达式2)B;Else if(表达式1)C;Else(表达式4)D;这样写语法是不会出错,但是在逻辑出错 循环执行:某些代码会重复执行 分类:for循环 格式:for(1;2;3)/ A 其中:for后面的括号( )不能省。表达式1:一般为赋值表达式,给控制变量赋初值。表达式2:关系表达式或逻辑表达式,循环控制条件。表达式3:一般为赋值表达式,给控制变量增量或减量。 表达式之间用分号分隔语句部分称为循环体,当需要执行多条语句时,应使用复合语句注意事项:表达式1、表达式2、和表达式3可以是任何类型的表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成 表达式1、表达式2、和表达式3都是任选项,可以省掉其中的一个、两个或全部,但其用于间隔的分号是一个也不能省的 表达式2如果为空则相当于表达式2的值是真 循环体中的语句可为任意类型的C语句 for语句也可以组成多重循环,而且也可以和while语句和do-while语句相互嵌套 循环体可以是空语句 执行的流程 单个for的循环的使用 多个for的循环的嵌入使用 例子: /*全乘法口诀表*/#includevoidmain()inti;/*表示的是列的1,2,3.9*/intj; /*表示的是行的1,2,3.9*/printf( );/*为了后边对齐,输出4个空列*/for(i=1;i=9;i+)printf(%4d,i);/*先把1 2 3.9输出*/ printf(n);/*换行*/ printf( );/*输出4个空列,为了横线和数字对齐*/ for(i=1;i=9;i+)printf(-);/*输出横线*/ printf(n); for(i=1;i=9;i+)/*开始输出乘积*/ printf(%3d|,i);/*输出第1列的值及竖线*/ for(j=1;j=9;j+)/*输出一行:1*/ printf(%4d,i*j); printf(n);/*输出一行后,加换行符*/ While循环 格式:(表达式) 语句特点:先判断表达式,再执行循环体其中:while后面的括号( )不能省。 while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式。 表达式的值是是循环的控制条件。语句部分称为循环体,当需要执行多条语句时,应使用复合语句。例:显示110的平方 #include void main ( ) int i = 1; while ( i = 10 ) printf (%d*%d=%dn, i, i, i*i); i+; while语句注意事项: (1) 如果while后的表达式的值一开始就为假,循环体将一次也不执行。 (2) 循环体中的语句可为任意类型的C语句。 (3) 遇到下列情况,退出while循环: 表达式为假(为0)。 循环体内遇到break、return或goto语句 (4) 在执行while语句之前,循环控制变量必须初始化,否则执行的结果将是不可预知的。 (5) 要在while语句的某处(表达式或循环体内)改变循环控制变量,否则极易构成死循环例:int num = 0; /字符计数while ( 1 ) if(getchar( ) = n) /如果输入的字符是回车符,则返回 return; num+; while与for的比较 两者可以可以相互转换 For(1,2,3)等价于 1; A While(2) A 3 例子: for和while循环的区别 #include main(void) int i,sum = 0; /*for(i=1;i101;+i) sum=sum+i;*/ i=1; while(i101) sum=sum+i; i+; printf(%dn,i); printf(%d,sum); Dowhile 格式: Do while(表达式); 特点:先执行循环体,再判断表达式注意事项:(1) 如果do-while后的表达式的值一开始就为假,循环体还是要执行一次。 (2) 在if语句、while语句中,表达式后面都不能加分号,而在do-while语句的表达式后面则必须 加分号,否则将产生语法错误。 (3) 循环体中的语句可为任意类型的C语句。 (4) 和while语句一样,在使用do-while语句时,不要忘记初始化循环控制变量,否则执行的结 果将是不可预知的。 (5) 要在do-while语句的某处(表达式或循环体内)改变循环控制变量的值,否则极易构成死循 环例:多次输入一元二次方程系数和结果#include#includeintmain(void) doublea,b,c,x1,x2,delta; char ch; do printf(请输入一元二次方程的三个系数); scanf(%lf%lf%lf,&a,&b,&c); delta = b*b - 4*a*c; if(delta 0) x2 = (-b - sqrt(delta) /(2*a); printf(有两个解,x1 = %f x2 =%f,x1,x2); else if(0 = delta) x1 = x2 = (-b)/(2*a); printf(有两个相同的解 x1=x2=%f,x1,x2); else printf(无解); printf(继续否(Y/N); scanf( %c,ch);/%c前必须加空白符 while(y= ch | Y= ch); return0;/表示此函数结束 while和do_while的区别 while语句的特点是:先判断表达式,后执行循环体。do.while语句的特点是:先执行循环体,后判断表达式while语句执行的次数: 0ndo.while 语句执行的次数:1n for和while当条件不成立时,一次循环都不执行do.while不管表达式成立与否,至少执行一次 求1100的累计和。用for语句用do_while语句用while语句#include void main ( )int sum = 0,i; for( i=1;i=100;i+)sum += i; printf (sum = %dn, sum);#include void main ( )int i = 1, sum = 0; dosum += i;i+; while ( i = 100 );printf (sum = %dn, sum);#include void main ( )int i = 1, sum = 0; while ( i = 100 )sum = sum+i;i=i+1;printf (sum = %dn, sum); Switch语句 格式 Switch(表达式) Case常量表达式:语句1; Case常量表达式:语句2; . Case常量表达式:语句n; Default:语句n+1;例子:加减乘除运算的选择#include main() int a,b; float s; char c; printf(请选择所进行的运算:n); printf( 1.加法(+)n); printf( 2.减法(-)n); printf( 3.乘法(*)n); printf( 4.除法(/)n); printf( 0.结束n); printf(请选择:n); scanf(%c,&c); printf(请输入两个整数:n); scanf(%d%d,&a,&b); switch(c) case +: s=a+b; break; case -: s=a-b; break; case *: s=a*b; break; case /: s=a/b; break; default : printf(Fn); printf(结果:%d%c %d = %0.1fn,a,c,b,s); 第一:所有case后面的常量表达式为便于描述我们姑且称之为标签,这些标签都只能是(1)枚举常量(有些说称之为枚举元素),(2)数值常量,(3)字符常量,(4)长变量(5)宏名的一种,注意普通变量,枚举变量是不能作为标签来使用的。 第二:switch后面括号的”表达式”允许是任何类型。但是在vc+值允许为int或char类型 第三:执行完一个case语句后,流程控制就转移下一个case字句继续执行,“case“常量表达式只是起语句标号的作用,并不是在该处进行语句判断,在执行switch语句时,根据switch()中表达式的值找到与之匹配的case字句,就从此case字句开始执行下去,不再进行判断 Break和continue Break如果用于循环是用来终止循环的 如果用于switch,则是终止switch 不能直接用于if,除非if属于循环 例子: For(i=0;i2) Break;/break虽然是if内部的语句,但break终止的是外部的for循环 Printf(“呵呵”);/永远不会输出的 例子: For(i=0;i3;+i) For(j=1;j4;+j) Break;break只能终止
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 空调项目合作协议书
- 社区商铺合租协议书
- 花园设计师合同范本
- 祛斑加盟约合同范本
- 畜牧疫苗防疫协议书
- 电子合同就业协议书
- 破产公司修复协议书
- 电商与平台合同范本
- 砸墙拆除合同协议书
- 社保局劳动合同范本
- 烘干塔买卖合同范本
- 扬修2SA8电动执行器使用维护
- 2025云南省科技投资管理有限公司招聘二次(19人)笔试考试参考试题及答案解析
- 光伏支架项目可行性研究报告
- (完整)特种设备专项应急预案
- 2025中国电信股份有限公司重庆分公司社会成熟人才招聘考试笔试备考试题及答案解析
- 2025年广东省春季高考(学考)英语真题(试题+答案)
- 2025年4月自考03450公共部门人力资源管理试题
- 黄瓜杂交种子生产技术
- 国际海域划界测量技术方法
- 大学英语四级 700核心高频词
评论
0/150
提交评论