C语言0506C程序流程设计.ppt_第1页
C语言0506C程序流程设计.ppt_第2页
C语言0506C程序流程设计.ppt_第3页
C语言0506C程序流程设计.ppt_第4页
C语言0506C程序流程设计.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五、六章 C程序流程设计 选择型程序设计(if else , switch) 循环型程序设计(for, while) 辅助控制语句(break, continue,goto,return) *1 5.1关系运算符和表达式 功能:比较两个常量、变量或表达式的值的大小 符号: = != 结合方向:从左向右 优先级:= (6) = != (7) 关系表达式的值:逻辑“真”和“假”,用1和0表示 用途:循环语句和选择语句中 例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc) 例int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc 例int a=3,b=2,c=1,d,f; ab/表达式值1 (ab)=c b+cb f=abc 例int a=3,b=2,c=1,d,f; ab/表达式值1 (ab)=c/表达式值1 b+cb f=abc 例int a=3,b=2,c=1,d,f; ab/表达式值1 (ab)=c/表达式值1 b+cb f=abc 例int a=3,b=2,c=1,d,f; ab/表达式值1 (ab)=c/表达式值1 b+cb/d=1 f=abc 例int a=3,b=2,c=1,d,f; ab/表达式值1 (ab)=c/表达式值1 b+cb/d=1 f=abc/f=0 例:若a=0; b=0.5; x=0.3; 则 a278在C中是允许的,值为例:5278在C中是允许的,值为 0 例:int i=1, j=7,a; a=i+(j%4!=0); 则a=例:int i=1, j=7,a; a=i+(j%4!=0); 则a= 2 例 a0 结果为 A100 结果为 例 a0 结果为 1 A100 结果为 0 关系运算请注意: (1) 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为 关系运算请注意: (1) 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为 0 关系运算请注意: (1) 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为 0 可改写为:fabs(1.0/3.0*3.0-1.0)b b=5; !a ab=2;c=3;d=4;m=1;n=1; (m=ab) 例:if (xy) max=x; else max=y; Date4 5.3 选择程序设计 if 语句(条件选择语句) if 语句的三种形式 形式一: 格式: if (expression) statement 执行过程: 形式二: 格式: if (expression) statement1 else statement2 执行过程: 形式三: 格式: 执行过程: if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 . else statementn expr1 statemnt1 非0 =0 expr2 expr3 statemntnstatemnt3statemnt2 非0 非0 =0 =0 例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; Date5 如: if(a=b if(3) printf(“OK”); if(a) printf(“%d”,a);例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); 例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); 关于if语句的说明: if后面的表达式类型任意 语句可以是复合语句 if(x) if(x!=0) if(!x) if(x= =0) Compile Error! Date6 /*ch4_1.c*/ #include main() int x,y; printf(“Enter an integer:“); scanf(“%d“, y=x; if(yabsolute value:%dn“,x,y); 例1 求一个数的绝对值 运行:Enter an integer:-12 integer:-12-absolute value :12 Date7 /*ch4_2.c*/ #include main() int a,b; printf(“Enter integer a:“); scanf(“%d“, printf(“Enter integer b:“); scanf(“%d“, if(a= =b) printf(“a=bn“); else printf(“a!=bn“); 例2 输入两个数并判断两数相等否 运行:Enter integer a:12 Enter integer b:12 a=b 运行:Enter integer a:12 Enter integer b:9 a!=b Date8 /*ch4_3.c*/ #include main() char c; printf(“Enter a character:“); c=getchar(); if(c=0 printf(“Enter integer x,y:“); scanf(“%d,%d“, if(x!=y) if(xy) printf(“XYn“); else printf(“XY Enter integer x,y:12,12 X=Y if else 配对原则: 缺省 时,else总是和它上 面离它最近的未配对的if 配对 if() if() if() else. else. else. Date11 例: if (a= =b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 实现if else 正确配对方法:加 例 考虑下面程序输出结果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(ab) printf(“%d”,a); else printf(“%d”,b); printf(“%d”,ab?a:b); 例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b); 例 x0?1:(x=0)?x:-x (c=a x60n”); break; 例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); 运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error! 例 void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); 运行结果:a=2,b=1 Date15 /*ch4_5.c*/ #include main() int c; printf(“Enter m or n or h or other:“); c=getchar(); switch(c) case m: printf(“nGood morning!n“);break; case n: printf(“nGood night!n“); break; case h: printf(“nHello!n“); break; default : printf(“n?n“); break; 例 根据输入字母输出字符串 Date16 6.1 循环程序设计 C语言中可以实现循环的语句 if 和 goto 构成循环 while 语句 do while () 语句 for 语句 goto语句及用goto构成循环 一般形式: 功能:无条件转移 goto 语句标号; . 标号:语句; 警告: 不能用整数作标号 只能出现在goto所在函数内,且唯一 只能加在可执行语句前面 限制使用goto语句 Date17 例 用if 和goto语句构成循环,求 /*ch5_1.c*/ #include main() int i,sum=0; i=1; loop: if(i main() int number,sum=0; read_loop: scanf(“%d“, if(!number) goto print_sum; sum+=number; goto read_loop; print_sum: printf(“The total sum is %dn“,sum); Date19 6.3 循环程序设计 while语句 一般形式: 执行流程: 判断表达式,后执行循环体 while(表达式) 循环体语句; expr 循环体 假(0) 真(非0) while 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break, return, goto 无限循环: while(1) 循环体; Date20 例 while语句构成循环,求 /*ch5_2.c*/ #include main() int i,sum=0; i=1; while(i main() int i=1; while(i main() int i,sum=0; i=1; do sum+=i; i+; while(i main() int i=1,sum=0; scanf(“%d“, do sum+=i; i+; while(i main() int i=1,sum=0; scanf(“%d“, while(i main( ) int i=0; for(i=0;i main( ) int i=0; for(;i main( ) int i=0; for(;i main( ) int i=0; for(;i main() int i,j,k; for(i=0,j=100;i main() char c; for(;(c=getchar()!=n;) printf(“%c “,c); 例:根据输入打印多个字符 #include main() int i,c; for(i=0;(c=getchar()!=n;i+=3) printf(“%c “,i+c); Date28 例 梯形法求数值积分 0 y x a a+h a+ih a+(i+1)hb f(x) #include main() float a,b; double s,h; double f(double x); int n,i; printf(“Input integral area a,b:“); scanf(“%f,%f“, printf(“Input n:“); scanf(“%d“, h=(b-a)/n; s=0.5*h*(f(a)+f(b); for(i=1;i main() int i,j; for(i=1;i100) break; printf(“r=%d,area=%.2fn“,r,area); Date34 例2 小写字母转换成大写字母, 直至输入非字母字符 #include main() int i,j; char c; while(1) c=getchar(); if(c=a float sum=0; for(i=0;i #include main() int s; float n,t,pi; t=1; pi=0; n=1.0; s=1; while(fabs(t)=1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(“pi=%10.6fn“,pi); Date38 例2 求Fibonacci数列 1,1,2,3,5,8,的前40个数 f1=1,f2=1 for i=1 to 20 输出f1,f2 f1=f1+f2 f2=f2+f1 1 5 34 233 1597 10946 75025 514229 3524578 24157817 1 8 55 377 2584 17711 121393 832040 5702887 39088169 2 13 89 610 4181 28657 196418 1346269 9227465 63245986 3 21 144 987 6765 46368 317811 2178309 14930352 102334155 /*ch5_7.c*/ #include main() long int f1,f2; int i; f1=1; f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论