程序控制培训课程

上传人:F****n 文档编号:95467936 上传时间:2019-08-19 格式:PPT 页数:53 大小:1,007KB
返回 下载 相关 举报
程序控制培训课程_第1页
第1页 / 共53页
程序控制培训课程_第2页
第2页 / 共53页
程序控制培训课程_第3页
第3页 / 共53页
程序控制培训课程_第4页
第4页 / 共53页
程序控制培训课程_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《程序控制培训课程》由会员分享,可在线阅读,更多相关《程序控制培训课程(53页珍藏版)》请在金锄头文库上搜索。

1、第4章 程序控制,主要内容: for语句 do/while语句 switch 语句 多重循环 break和continue 的使用 逗号表达式 逻辑运算符,4.1 逗号运算符和逗号表达式,逗号运算符:“,”也叫顺序求值运算符。 逗号表达式:用“,”把两个表达式连接起来形式的表达式,叫逗号表达式。基本格式: 表达式1,表达式2 例如: 400+500,600*y 逗号表达式的值:最后一个表达式的值。 逗号运算符的优先级:最低。但()可以改变其运算顺序。 扩展的逗号表达式: 表达式1,表达式2,表达式3,,逗号表达式,例子: a=3*5,a*4 /* a=15*/ (a=3*5,a*4),a+5

2、/* a=15 */ x=(a=3,6*3) /* 赋值表达式*/ x=a=3,6*a /* 逗号表达式*/,注意:并不是所有出现逗号的地方都是逗号运算符。 printf(“%d,%d,%dn”,(a,b,c),b,c);,逗号表达式,非逗号表达式,60,20,a=3,x=18,x=3,a=3 表达式的值 18,4.2 逻辑运算及其表达式,用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。 4.2.1 逻辑运算及其优先次序 1逻辑运算符及其运算规则 (1)逻辑运算符。 C语言提供三种逻辑运算符: & 逻辑与(相当于“同时”) 逻辑或(相当于“或者”) ! 逻辑非(相当于“否定”)

3、其中,“&”和“”是双目运算符,要求有两个运算量;而“!”是单目运算符,只要求有一个运算量。 (2)逻辑运算符的运算规则。,2逻辑运算符的运算优先级 (1)在三个逻辑运算符中,逻辑非的优先级最高,逻辑与次 之,逻辑或最低。 即:!(非)&(与)(或) (2)与其他种类运算符的优先关系如下: !(非) 算术运算 关系运算 &(与)(或) 赋值运算 高 低 4.2.2 逻辑表达式 1逻辑表达式的概念 逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,用逻辑表达式表示多个条件的组合。例如, (year%4=0)&(year%100!=0)(year%400= =

4、0) 就是一个判断一个年份是否是闰年的逻辑表达式。,2逻辑量的真假判定0和非0 (1)逻辑运算符两侧的操作数,除可以是0和非0的整数外,也可以是其他任何类型的数据,如实型、字符型等。 (2)在计算逻辑表达式时,只有必须执行的表达式时,才求解该表达式(即并不是所有的表达式都被求解)。,在编写程序时, 经常会碰到按不同情况分转的多路问题, 这时可用嵌套if -else-fi语句来实现, 但if-else-if语句使用不方便, 并且容易出错。对这种情 况, Turbo C2.0提供了一个开关语句。开关语句格式为: switch(变量) case 常量1: 语句1或空; break; case 常量2

5、: 语句2或空; break; . . case 常量n; 语句n或空; break; default: 语句n+1或空; ,执行switch开关语句时, 将变量逐个与case后的 常量进行比较, 若与其中 一 个相等, 则执行该常量 下的语句, 若不与任何一个 常量相等, 则执行default 后 面的语句。,switch语句,switch语句(开关分支语句) 一般形式:,E1-En里的语句组末尾需要break;否则执行顺序不一样。,说明: E1,E2,En是常量表达式,且值必须互不相同 必须用break跳出 case后可包含多个可执行语句,且不必加 switch可嵌套 多个case可共用一

6、组执行语句,如: case A: case B: case C: case D: printf(“score60n”); 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!,上面程序的输出结果是: A) a=

7、2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=2,例 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); ,计算表达式(形如3+5,9/3的四则运算式)的值 #include #include main() float a,b,d; int flage; char op,ch; while(

8、1) flage=1; printf(“Enter your expression:n“); scanf(“%f%c%f“, ,if(flage=1) printf(“%.0f%c%.0f=%.2fn“,a,op,b,d); else if(flage=0) printf(“Division by zero!n“); else printf(“Unknown operator!n“); printf(“continue(Y/N)?“); flushall(); scanf(“%c“, ,1. do-while语句,一般格式: do 语句 while(表达式);,语句,表达式,真,假,用do-w

9、hile()求:s=1+2+3+100。,main() int i,sum; i=1;sum=0; do sum+=i; i+; while(i=100); printf(“%d”,sum); ,for语句,for语句的一般格式: for(表达式1;表达式2;表达式3)语句 100 例如:求i 1 for( i=1 ; i=100 ; i+ ) sum+=i;,表达式1,表达式2,语句,表达式3,假,真,for(循环变量初始化;循环条件;循环变量增量) 语句,void main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(“sum=%dn”,

10、sum); ,void main() int i,sum=0; i=1; for( ; i=100;i+) sum+=i; printf(“sum=%dn”,sum); ,void main() int i,sum=0; i=1; for( ; i=100;) sum+=i; i+; printf(“sum=%dn”,sum); ,void main() int i,sum=0; i=1; for(;) sum+=i; i+; if(i100) break; printf(“sum=%dn”,sum); ,for()语句的其他形式: 1) char c; int i; for( i=0 ; (

11、c=getchar()!=n ; i+=c ); printf(“sum=%dn”,i); 2)char c; for( ; (c=getchar()!=n ; ) printf(“%c”,c); 3)int i,j; for(i=0,j=100;i=j; i+, j-) printf(“%d %dn”,i,j);,没有语句 (循环体),任意 表达式,逗号 表达式,break和continue语句,break语句:结束循环,执行循环后的下个语句。,#define PI 3.1415926 main() float area; int r; for(r=1;r100) break; printf

12、(“r=%d,area=%fn”,r,area); printf(“The end. Press any key to go on”); ,结束循环,执行下一个语句,continue语句:结束本次循环,继续下一次循环。,例 把100200不能被3整除的数输出。 main() int n; for(n=100;n=200;n+) if(n%3=0) continue; printf(“%d n”,n); ,1. 统计输入一篇文章中的字符个数。 2. 统计输入一篇文章中的的行数 3. 统计输入一篇文章中的的行数、单词数与字符数 4. 统计一篇文章中的数字、空白符及字符。,示例,#include /

13、*e2.c*/ /* count characters in input; 1st version */ main() long nc; nc = 0; while (getchar() != EOF) +nc; printf(“nc=%ldn“, nc); ,1. 统计一篇文章中输入的字符个数。,#include /* count lines in input */ main() int c, nl; nl = 0; while (c = getchar() != EOF) if (c = n) +nl; printf(“n1=%dn“, nl); ,2. 统计一篇文章中输入的行数。,#in

14、clude #define IN 1 #define OUT 0 /* count lines, words, and characters in input */ void main() int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while (c = getchar() != EOF) +nc; if (c = n) +nl; if (c = | c = n|c=t) state = OUT; else if (state = OUT) state = IN; +nw; printf(“lines=%d,words=%d

15、,ch=%dn“, nl, nw, nc); ,3. 统计一篇文章中输入的行数,单词个数及字符个数。,#include void main() int c, i, nwhite, nother; int ndigit10; nwhite = nother = 0; for (i = 0; i = 0 ,4. 统计一篇文章中的数字、空白符及字符。,循环的嵌套,一个循环体内包含另一个循环,叫循环嵌套。 循环嵌套必须是完全嵌套。,while() while() ,do do while(); while();,for(;) for(;) ,for(;) ,for(;) ,while() ,例1编程打印如下图案,* * *,分析: 1. 外循环控制行数 (i=13) 2.内循环控制空格数k =2,1,0 3. 内循环控制“*” 个数( j=1,3,5),#include void main() int i,j,k; for(i=1;i=3;i+)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号