《(2020年)流程管理流程再造企业C程序的流程设计》由会员分享,可在线阅读,更多相关《(2020年)流程管理流程再造企业C程序的流程设计(13页珍藏版)》请在金锄头文库上搜索。
1、n 当前文文件修改密码:8362839n 更多数据请访问精品数据网(.)第三章 C程序的流程设计一、教学的目的与要求掌握顺序、选择、循环三类程序流程控制语句,以及转移语句,能够正确使用它们编程。二、重点与难点:if语句中的条件表达式,if语句中if-else的匹配关系,if语句的嵌套;switch语句的控制流程,switch语句的嵌套;三种循环语句的格式和功能,循环嵌套的使用;转移语句的使用。三、教学内容第一节 算法1、算法的概念为解决某一个问题而采取的方法和步骤,就称为算法。2、算法的性质有穷性:一个算法应包含有限的操作步骤一个初始:此动作序列只有一个初始动作确定性:算法中的每一个步骤都应当
2、是确定性的,仅有一个后继动作。有一个或多个输出:序列终止表示问题得到解答或问题没有解答,没有输出的算法是没有意义的。第二节 选择型程序设计1、if 语句的形式 if(条件表达式) 语句 if(条件表达式) 语句1 else 语句 2 注意:if语句中的条件表达式一般为逻辑表达式或关系表达式,但也可以是任意的数值类型(包括整型、实型、字符型、指针类型),例如下列语句也是合法的。 if(a) printf(“%d” ,a);在if语句中,分号是语句的结束标志。在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号将几个语句括起来成为一个复合语句。例1:以下不正确的if语
3、句形式是( )。A)if(xy&x!=y);B)if(x=y) x+=y;C)if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y);D)if(xy)z=x;x=y;y=z; 答案:x,y,z的值分别是:20 30 30 详解:在此语句中,条件xy为假,所以只执行x=y;y=z;两条语句。例3、以下不正确的语句是( )A)if(xy);B)if(x=y)&(x!=0) x+=y;C)if(x!=y) scanf(“%d”,&x);D)if(xy)x+;y+;答案:D详解:分号是语句结束的标志,y+的末尾无分号,所以y+不是合法的语句。2、if 的嵌套 if(条件
4、1) if(条件2) 语句1 else 语句2 else if(条件3) 语句3 else 语句4例4:以下程序的输出结果是( )main( )int a=100,x=10,y=20,ok1=5,ok2=0;if(xy)if(y!=10)if (!ok1)a=1;else if(ok2) a=10; printf(“%dn”,a); 答案:100详解:把10、20、5、0分别给变数x、y、ok1、ok2赋值,执行条件语句后a值没有改变,所以a值仍是原值100。3、switch结构switch语句是多分支选择语句,其形式如下:switch(表达式)case 常量表达式1:语句1case 常量表达
5、式2:语句2default:语句n+1注意:1、switch后面括号内的“表达式”,可以是整型表达式或字符型表达式,也可以枚举型数据。2、当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。3、每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象。4、执行完一个case后面的语句后,流程控制转移到下一个case继续执行,直到遇到break语句或执行完为止。5、default可以放在case语句的后面,也可以放在case语句的前面。例5:运输公司对用户计算
6、运费,距离越远,每公里运费越低。设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f计算公式为f=p*w*s(1-d),编写程序。公里数s与折扣率d的标准如下:(此程序可用ifelse来完成,也可以用switch来完成)。s250km d=0250s500 d=0.05500s1000 d=0.0751000s2000 d=0.12000s3000 d=0.153000s d=0.2 main()int s;float p,w,d,f;printf(“请输入每公里每吨货物的基本运费”);scanf(“%f”,&p);printf(“请输入货物重”);scanf(“%f”,
7、&w);printf(“请输入公里数”);scanf(“%f”,&s);switch(int)(s/250) case 0: d=0; break; case 1: d=0.05; break; case 2: case 3: d=0.075; break; case 4: case 5:case 6: case 7: d=0.1; break; case 8: case 9:case 10: case 11: d=0.15; break; default: d=0.2; f=p*w*s(1-d); printf(“基本运费是:%f”,f);详解:1、多个case可共享一组执行语句,必须写成如
8、下的形式:case 4: case 5:case 6: case 7: d=0.1; break;case后面只能有一个常量,把上式改写成case 4,5,6,7: d=0.1; break;的形式是错误的。2、switch后面括号内的“表达式”必须是整型表达式或字符型表达式,也可以是枚举型数据,对于swith来说,关键是把原始数据转换为易表达的形式。例6:请读以程序写出程序的输出结果。#includemain( ) int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+;break;case 1: b+;break; case
9、2: a+;b+;break; printf(“a=%d,b=%d”,a,b);答案:a=2,b=1详解:此程序是switch的嵌套结构,在此程序中break跳出内层switch结构,接着执行外层switch的case 2后的语句。例7:写出下面程序的运行结果是( )main()int i;for(i=1;i=5;i+) switch(i%5) case 0: printf(“*”); break; case 1: printf(“#”); break; default: printf(“n”); case 2: printf(“&”); 答案:#& & &*详解:default可放在case
10、语句的前面,也可以放在case语句的后面,当i%5不等于0,1,2时,将执行default后的语句printf(“n”);执行完成后没有break,将继续执行case 2后的语句printf(“&”);第三节 循环型程序设计1、while语句while语句用来实现”当型”循环结构,其一般形式如下:while(条件表达式) 循环体语句例8:设有程序段: int k=10; while(k=0) k=k-1; 循环体执行( )次。 答案:0答案解析:在此程序的while结构中,条件表达式k=0的结果永远为0即为假,所以循环执行的次数为0。例9:下面程序段的运行结果是( )x=y=0; while(
11、x3) break; 循环执行( )次答案:4答案解析:while结构中的条件表达式printf(“*”)的值为输出数据的个数,在此例中,printf(“*”)的结果为1,即为真。2、do-while语句do-while语句的特点是先执行循环体,然后判断循环条件是否成立,其一般形式为:do循环体语句while(条件表达式); 例11、若有如下语句 int x=3; do printf(“%dn”,x-=2); while(-x);则上面程序段输出结果是( )。答案:1 例12、以下程序段循环执行几次。x=-1;do x=x*x; while(!x);答案:1例13、下面程序的运行结果是( )m
12、ain( )int y=10;doy-; while(-y);printf(“%dn”,y-);答案:0 3、for语句C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句,其一般形式为:for(表达式1;表达式2;表达式2) 语句说明:for语句一般形式中的“表达式1”可以省略,此时应for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如果表达式2省略,即不判断循环条件,循环无终止地进行下去。表达式3也可以省略,但此时程序设计者应另外设法保证循环正常结束。可以省略表达式1和表达式3,只有表达式2,即只给循环条件,在这种情况下,完全等同于while语句。3个表达式都可省略,如:for( ; ; ) 语句,相当于while(1) 语句,即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止地执行循环体。表达式1可以是