c语言程序设计第4章

上传人:正** 文档编号:51702964 上传时间:2018-08-16 格式:PPT 页数:65 大小:310KB
返回 下载 相关 举报
c语言程序设计第4章_第1页
第1页 / 共65页
c语言程序设计第4章_第2页
第2页 / 共65页
c语言程序设计第4章_第3页
第3页 / 共65页
c语言程序设计第4章_第4页
第4页 / 共65页
c语言程序设计第4章_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《c语言程序设计第4章》由会员分享,可在线阅读,更多相关《c语言程序设计第4章(65页珍藏版)》请在金锄头文库上搜索。

1、 张茂元 副教授, 硕士生导师, 博士后华中科技大学计算机学院2007年2月C语言程序设计*1华中科技大学计算机学院第4章 流程控制4.1 C语句分类4.2 表达式语句 4.3 复合语句4.4 if语句 4.5 switch语句4.6 while语句 4.7 for语句4.8 do-while语句 4.9 goto语句和标号语句 4.10 break语句、continue语句和return语句 4.11 嵌套循环程序设计 *4.12 推理机程序设计Date2华中科技大学计算机学院C语 句4.1 C语句分类 说明语 句可执行语 句变量说明、函数说明、 常量定义、类型定义、 表达式语句、复合语句、

2、 选择语句(if 和 switch)、 循环语句(while, do-while和for) 、 转移语句(break, continue, goto和 return)、 标号语句Date3华中科技大学计算机学院n定义n在任何C表达式的末尾加一个分号n形式:表达式;n“;”表示一个语句的结束,是C语句不可缺少的组成部分n例n赋值、输入和输出都由表达式语句实现nx = y + 1; x = y + 1nx += y; ni = j = k; nprintf(”hello”);nscanf(”%d”, 4.2 表达式语句 Date4华中科技大学计算机学院na b;n也是一个表达式语句n但在表达式求值

3、的过程中并没有改变任何变量的值n没有实际意义n空语句n仅由一个分号构成的语句称为,即:;n不执行任何操作n用途:某处在语法上需要一条语句,而不需要执行任何操作时n例如 for(i=0; stringi!=0;i+)n ;4.2 表达式语句(续) Date5华中科技大学计算机学院n形式n用花括号“”括起来的一组语句nn说明部分n语句部分nn说明部分可包含0至多个说明语句n语句部分可包含0至多个执行语句n效果n语法上等价于单个语句n复合语句又称块,函数体也是一个块4.3 复合语句Date6华中科技大学计算机学院例4.3:不含说明语句的复合语句 t = a; a = b; b = t; 例4.4:包

4、含说明了语句的复合语句。 int t ; t = a; a = b; b = t; 复合语句举例Date7华中科技大学计算机学院n嵌套的复合语句n复合语句中包含复合语句,从而形成嵌套的复合语句nnint a = 0, b = 1;nnint a=1;nprintf(”a=%dn”, a);nprintf(”b=%dn”,b += 1);nnprintf(“a=%dn”,a);nprintf(“b=%dn”,b);n 4.3 复合语句(续)Date8华中科技大学计算机学院n用途n语法上只允许出现单个语句而处理上需要 执行多个语句的地方n例如,作为if语句的子句及循环语句的循环体n改变嵌套if-e

5、lse语句的配对规则n当需要说明临时使用的局部变量时,也可 使用复合语句 4.3 复合语句(续)Date9华中科技大学计算机学院n形式nif格式:nif (表达式)语句1;nif-else格式nif (表达式)语句1;else语句2; 4.4 if语句Date10华中科技大学计算机学院n嵌套的if 语句nif子句或else子句中又包含if 语句n例如,可以用下面的一个嵌套的if语句求a,b,c三 个数中最大值:nif ( a b )nif ( a c ) max = a; n else max = c;nelsenif ( b c ) max = b; nelse max = c;4.4 if

6、语句(续)Date11华中科技大学计算机学院n嵌套if语句中问题n对嵌套if语句中else与if的配对必须制定一个规则 ,否则会造成理解上的二义性。例如:nif ( n 0 )nif ( a b ) z = a;nelse z = b; nelse的配对规则nelse与其前面最靠近的还未配对的if配对,即内 层优先配对原则4.4 if语句(续)Date12华中科技大学计算机学院例4.6:解方程ax + b = 0,a和b从终端输入。 #include void main(void) float a, b, x;printf(”input a,b:n”); scanf(”%f%f”, if (

7、!a ) printf(”error in input data n”); else x=-b/a;printf(”x=%.4fn”, x); 3程序设计举例 Date13华中科技大学计算机学院例:学生考试成绩按以下标准分等(x为学生 考试分数): 分数范围等级英文名 90x100excellent(优) 80x90good(良) 60x80middle(中) x60bad(差) 输入某学生的考试分数,输出该学生的考试 成绩的英文等级。要求用if语句来实现。 3程序设计举例Date14华中科技大学计算机学院#include “stdio.h” main() float x;printf(“in

8、put average score”);scanf(“%f”,if (x100 | x=90)printf(“excellent”);else if (x=80)printf(“good”);else if (x=60)printf(“middle”) ;else printf(“bad”); #include “stdio.h” main() float x;printf(“input average score”);scanf(“%f”,if (x100 | x=90)printf(“excellent”);else if ( x=80)printf(“good”);else if ( x

9、=60)printf(“middle”);else printf(“bad”); Date15华中科技大学计算机学院1. switch语句的形式 switch(表达式e) case 常量表达式exp1:语句序列1; break; case 常量表达式exp2:语句序列2; break; case 常量表达式expn:语句序列n; break; default: 语句序列n+1; 4.5 switch语句Date16华中科技大学计算机学院执行流程 :计算表达式e语句序列1语句序列n+1语句序列2语句序列ne=exp1真e=exp2e=expn有default真真真起点终点说明:语句break可使

10、流程 从各语句序列直接转 移到终点;无break时 顺序执行执行 breakDate17华中科技大学计算机学院nswitch语句的使用要点n列出的case应能包括选择表达式所有的取 值情况n如果不能全部包括,则应使用default子句处 理余下的情况n注意break在switch中的作用nbreak跳出switch语句nreturn立即结束函数并返回到调用处4.5 switch语句(续)Date18华中科技大学计算机学院例如:下面是一个不含转移语句的switch语句,注 意观察该语句执行时的输出。ni = 1;nswitch ( i )ncase 0:printf(“%dt“, i);ncas

11、e 1:printf(“%dt“, i+);ncase 2:printf(“%dt“, i+);ncase 3:printf(“%d“, i+);ndefault:printf(“n“);nnprintf(“%dn“, i); 4.5 switch语句(续)Date19华中科技大学计算机学院例4.8:学生考试成绩按以下标准分等(x为学生考试 分数): 分数范围等级英文名 90x100excellent(优) 80x90good(良) 60x80middle(中) x60bad(差) 输入某学生的考试分数,输出该学生的考试成绩的 英文等级。要求用switch语句来实现。 3程序设计举例Date2

12、0华中科技大学计算机学院main() float x; int i;printf(“input score”); scanf(“%f”,i=x/10; /*i的正确值应为:0至10*/if (i10 | invoid main(void)nn int year, month, days, flag;n printf(”input year, month:n”);n scanf(”%d%d”, n flag = 1;n switch ( month )n case 1:n case 3:n case 5:n case 7:n case 8:n case 10:n case 12: days =

13、31; break; Date23华中科技大学计算机学院n case 4:n case 6:n case 9:n case 11: days = 30; break;n case 2: if (!( year % 4) n else days = 28;n break;ndefault: flag = 0;n /* end of switch */n if ( flag )n printf(”days = %dn”,days);n else /* 输入的月份无效 */n printf(”invalid input monthn”); nDate24华中科技大学计算机学院4.6 while语句问

14、题:求S= 解法1:S=1+2+3+4+5+6+7+8+9+10;不适合大规模运算 解法2:逐步累加Ss=0; s=s+ 1;s=s+ 2; s=s+ 10;Date25华中科技大学计算机学院while语句的形式:while (表达式) 语句其中: 表达式可为任何类型;语句为循环体,仅一条语句,多条时用复合语句; 当表达式非0时执行循环体,注意:为避免死循环,循环变量在循环开始前初始化,表达式中应包括循环变量,循环体中修改,最终可使表达式为0,终止循环。语句表达式非00Date26华中科技大学计算机学院例:求S= #include “stdio.h” main() int s,i;s=0; i=1;while (in#define COPY0n#define START1n#define COMMENT2n#define END3nvoid main(void)n char c;n int state;n state = COPY;n printf(”input C program end with ctrl+z:n”);n while (c = getchar() != EOF)n n /* end of main */Date33华中科技大学计算机学院例4.15nswitch (state) n case COPY: if (c = /) state = START;n

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

当前位置:首页 > 办公文档 > 其它办公文档

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